<!doctype html>
<html>
<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width initial-scale=1'>
    <title>readme</title>
    <style type='text/css'>html {
        overflow-x: initial !important;
    }

    :root {
        --bg-color: #ffffff;
        --text-color: #333333;
        --select-text-bg-color: #B5D6FC;
        --select-text-font-color: auto;
        --monospace: "Lucida Console", Consolas, "Courier", monospace;
        --title-bar-height: 20px;
    }

    .mac-os-11 {
        --title-bar-height: 28px;
    }

    html {
        font-size: 14px;
        background-color: var(--bg-color);
        color: var(--text-color);
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        -webkit-font-smoothing: antialiased;
    }

    body {
        margin: 0px;
        padding: 0px;
        height: auto;
        bottom: 0px;
        top: 0px;
        left: 0px;
        right: 0px;
        font-size: 1rem;
        line-height: 1.42857;
        overflow-x: hidden;
        background: inherit;
        tab-size: 4;
    }

    iframe {
        margin: auto;
    }

    a.url {
        word-break: break-all;
    }

    a:active, a:hover {
        outline: 0px;
    }

    .in-text-selection, ::selection {
        text-shadow: none;
        background: var(--select-text-bg-color);
        color: var(--select-text-font-color);
    }

    #write {
        margin: 0px auto;
        height: auto;
        width: inherit;
        word-break: normal;
        overflow-wrap: break-word;
        position: relative;
        white-space: normal;
        overflow-x: visible;
        padding-top: 36px;
    }

    #write.first-line-indent p {
        text-indent: 2em;
    }

    #write.first-line-indent li p, #write.first-line-indent p * {
        text-indent: 0px;
    }

    #write.first-line-indent li {
        margin-left: 2em;
    }

    .for-image #write {
        padding-left: 8px;
        padding-right: 8px;
    }

    body.typora-export {
        padding-left: 30px;
        padding-right: 30px;
    }

    .typora-export .footnote-line, .typora-export li, .typora-export p {
        white-space: pre-wrap;
    }

    .typora-export .task-list-item input {
        pointer-events: none;
    }

    @media screen and (max-width: 500px) {
        body.typora-export {
            padding-left: 0px;
            padding-right: 0px;
        }

        #write {
            padding-left: 20px;
            padding-right: 20px;
        }

        .CodeMirror-sizer {
            margin-left: 0px !important;
        }

        .CodeMirror-gutters {
            display: none !important;
        }
    }

    #write li > figure:last-child {
        margin-bottom: 0.5rem;
    }

    #write ol, #write ul {
        position: relative;
    }

    img {
        max-width: 100%;
        vertical-align: middle;
        image-orientation: from-image;
    }

    button, input, select, textarea {
        color: inherit;
        font: inherit;
    }

    input[type="checkbox"], input[type="radio"] {
        line-height: normal;
        padding: 0px;
    }

    *, ::after, ::before {
        box-sizing: border-box;
    }

    #write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre {
        width: inherit;
    }

    #write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p {
        position: relative;
    }

    p {
        line-height: inherit;
    }

    h1, h2, h3, h4, h5, h6 {
        break-after: avoid-page;
        break-inside: avoid;
        orphans: 4;
    }

    p {
        orphans: 4;
    }

    h1 {
        font-size: 2rem;
    }

    h2 {
        font-size: 1.8rem;
    }

    h3 {
        font-size: 1.6rem;
    }

    h4 {
        font-size: 1.4rem;
    }

    h5 {
        font-size: 1.2rem;
    }

    h6 {
        font-size: 1rem;
    }

    .md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p {
        margin-top: 1rem;
        margin-bottom: 1rem;
    }

    .hidden {
        display: none;
    }

    .md-blockmeta {
        color: rgb(204, 204, 204);
        font-weight: 700;
        font-style: italic;
    }

    a {
        cursor: pointer;
    }

    sup.md-footnote {
        padding: 2px 4px;
        background-color: rgba(238, 238, 238, 0.7);
        color: rgb(85, 85, 85);
        border-radius: 4px;
        cursor: pointer;
    }

    sup.md-footnote a, sup.md-footnote a:hover {
        color: inherit;
        text-transform: inherit;
        text-decoration: inherit;
    }

    #write input[type="checkbox"] {
        cursor: pointer;
        width: inherit;
        height: inherit;
    }

    figure {
        overflow-x: auto;
        margin: 1.2em 0px;
        max-width: calc(100% + 16px);
        padding: 0px;
    }

    figure > table {
        margin: 0px;
    }

    tr {
        break-inside: avoid;
        break-after: auto;
    }

    thead {
        display: table-header-group;
    }

    table {
        border-collapse: collapse;
        border-spacing: 0px;
        width: 100%;
        overflow: auto;
        break-inside: auto;
        text-align: left;
    }

    table.md-table td {
        min-width: 32px;
    }

    .CodeMirror-gutters {
        border-right: 0px;
        background-color: inherit;
    }

    .CodeMirror-linenumber {
        user-select: none;
    }

    .CodeMirror {
        text-align: left;
    }

    .CodeMirror-placeholder {
        opacity: 0.3;
    }

    .CodeMirror pre {
        padding: 0px 4px;
    }

    .CodeMirror-lines {
        padding: 0px;
    }

    div.hr:focus {
        cursor: none;
    }

    #write pre {
        white-space: pre-wrap;
    }

    #write.fences-no-line-wrapping pre {
        white-space: pre;
    }

    #write pre.ty-contain-cm {
        white-space: normal;
    }

    .CodeMirror-gutters {
        margin-right: 4px;
    }

    .md-fences {
        font-size: 0.9rem;
        display: block;
        break-inside: avoid;
        text-align: left;
        overflow: visible;
        white-space: pre;
        background: inherit;
        position: relative !important;
    }

    .md-diagram-panel {
        width: 100%;
        margin-top: 10px;
        text-align: center;
        padding-top: 0px;
        padding-bottom: 8px;
        overflow-x: auto;
    }

    #write .md-fences.mock-cm {
        white-space: pre-wrap;
    }

    .md-fences.md-fences-with-lineno {
        padding-left: 0px;
    }

    #write.fences-no-line-wrapping .md-fences.mock-cm {
        white-space: pre;
        overflow-x: auto;
    }

    .md-fences.mock-cm.md-fences-with-lineno {
        padding-left: 8px;
    }

    .CodeMirror-line, twitterwidget {
        break-inside: avoid;
    }

    .footnotes {
        opacity: 0.8;
        font-size: 0.9rem;
        margin-top: 1em;
        margin-bottom: 1em;
    }

    .footnotes + .footnotes {
        margin-top: 0px;
    }

    .md-reset {
        margin: 0px;
        padding: 0px;
        border: 0px;
        outline: 0px;
        vertical-align: top;
        background: 0px 0px;
        text-decoration: none;
        text-shadow: none;
        float: none;
        position: static;
        width: auto;
        height: auto;
        white-space: nowrap;
        cursor: inherit;
        -webkit-tap-highlight-color: transparent;
        line-height: normal;
        font-weight: 400;
        text-align: left;
        box-sizing: content-box;
        direction: ltr;
    }

    li div {
        padding-top: 0px;
    }

    blockquote {
        margin: 1rem 0px;
    }

    li .mathjax-block, li p {
        margin: 0.5rem 0px;
    }

    li blockquote {
        margin: 1rem 0px;
    }

    li {
        margin: 0px;
        position: relative;
    }

    blockquote > :last-child {
        margin-bottom: 0px;
    }

    blockquote > :first-child, li > :first-child {
        margin-top: 0px;
    }

    .footnotes-area {
        color: rgb(136, 136, 136);
        margin-top: 0.714rem;
        padding-bottom: 0.143rem;
        white-space: normal;
    }

    #write .footnote-line {
        white-space: pre-wrap;
    }

    @media print {
        body, html {
            border: 1px solid transparent;
            height: 99%;
            break-after: avoid;
            break-before: avoid;
            font-variant-ligatures: no-common-ligatures;
        }

        #write {
            margin-top: 0px;
            padding-top: 0px;
            border-color: transparent !important;
        }

        .typora-export * {
            -webkit-print-color-adjust: exact;
        }

        .typora-export #write {
            break-after: avoid;
        }

        .typora-export #write::after {
            height: 0px;
        }

        .is-mac table {
            break-inside: avoid;
        }
    }

    .footnote-line {
        margin-top: 0.714em;
        font-size: 0.7em;
    }

    a img, img a {
        cursor: pointer;
    }

    pre.md-meta-block {
        font-size: 0.8rem;
        min-height: 0.8rem;
        white-space: pre-wrap;
        background: rgb(204, 204, 204);
        display: block;
        overflow-x: hidden;
    }

    p > .md-image:only-child:not(.md-img-error) img, p > img:only-child {
        display: block;
        margin: auto;
    }

    #write.first-line-indent p > .md-image:only-child:not(.md-img-error) img {
        left: -2em;
        position: relative;
    }

    p > .md-image:only-child {
        display: inline-block;
        width: 100%;
    }

    #write .MathJax_Display {
        margin: 0.8em 0px 0px;
    }

    .md-math-block {
        width: 100%;
    }

    .md-math-block:not(:empty)::after {
        display: none;
    }

    .MathJax_ref {
        fill: currentcolor;
    }

    [contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus {
        outline: 0px;
        box-shadow: none;
    }

    .md-task-list-item {
        position: relative;
        list-style-type: none;
    }

    .task-list-item.md-task-list-item {
        padding-left: 0px;
    }

    .md-task-list-item > input {
        position: absolute;
        top: 0px;
        left: 0px;
        margin-left: -1.2em;
        margin-top: calc(1em - 10px);
        border: none;
    }

    .math {
        font-size: 1rem;
    }

    .md-toc {
        min-height: 3.58rem;
        position: relative;
        font-size: 0.9rem;
        border-radius: 10px;
    }

    .md-toc-content {
        position: relative;
        margin-left: 0px;
    }

    .md-toc-content::after, .md-toc::after {
        display: none;
    }

    .md-toc-item {
        display: block;
        color: rgb(65, 131, 196);
    }

    .md-toc-item a {
        text-decoration: none;
    }

    .md-toc-inner:hover {
        text-decoration: underline;
    }

    .md-toc-inner {
        display: inline-block;
        cursor: pointer;
    }

    .md-toc-h1 .md-toc-inner {
        margin-left: 0px;
        font-weight: 700;
    }

    .md-toc-h2 .md-toc-inner {
        margin-left: 2em;
    }

    .md-toc-h3 .md-toc-inner {
        margin-left: 4em;
    }

    .md-toc-h4 .md-toc-inner {
        margin-left: 6em;
    }

    .md-toc-h5 .md-toc-inner {
        margin-left: 8em;
    }

    .md-toc-h6 .md-toc-inner {
        margin-left: 10em;
    }

    @media screen and (max-width: 48em) {
        .md-toc-h3 .md-toc-inner {
            margin-left: 3.5em;
        }

        .md-toc-h4 .md-toc-inner {
            margin-left: 5em;
        }

        .md-toc-h5 .md-toc-inner {
            margin-left: 6.5em;
        }

        .md-toc-h6 .md-toc-inner {
            margin-left: 8em;
        }
    }

    a.md-toc-inner {
        font-size: inherit;
        font-style: inherit;
        font-weight: inherit;
        line-height: inherit;
    }

    .footnote-line a:not(.reversefootnote) {
        color: inherit;
    }

    .md-attr {
        display: none;
    }

    .md-fn-count::after {
        content: ".";
    }

    code, pre, samp, tt {
        font-family: var(--monospace);
    }

    kbd {
        margin: 0px 0.1em;
        padding: 0.1em 0.6em;
        font-size: 0.8em;
        color: rgb(36, 39, 41);
        background: rgb(255, 255, 255);
        border: 1px solid rgb(173, 179, 185);
        border-radius: 3px;
        box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset;
        white-space: nowrap;
        vertical-align: middle;
    }

    .md-comment {
        color: rgb(162, 127, 3);
        opacity: 0.8;
        font-family: var(--monospace);
    }

    code {
        text-align: left;
        vertical-align: initial;
    }

    a.md-print-anchor {
        white-space: pre !important;
        border-width: initial !important;
        border-style: none !important;
        border-color: initial !important;
        display: inline-block !important;
        position: absolute !important;
        width: 1px !important;
        right: 0px !important;
        outline: 0px !important;
        background: 0px 0px !important;
        text-decoration: initial !important;
        text-shadow: initial !important;
    }

    .md-inline-math .MathJax_SVG .noError {
        display: none !important;
    }

    .html-for-mac .inline-math-svg .MathJax_SVG {
        vertical-align: 0.2px;
    }

    .md-math-block .MathJax_SVG_Display {
        text-align: center;
        margin: 0px;
        position: relative;
        text-indent: 0px;
        max-width: none;
        max-height: none;
        min-height: 0px;
        min-width: 100%;
        width: auto;
        overflow-y: hidden;
        display: block !important;
    }

    .MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display {
        width: auto;
        margin: inherit;
        display: inline-block !important;
    }

    .MathJax_SVG .MJX-monospace {
        font-family: var(--monospace);
    }

    .MathJax_SVG .MJX-sans-serif {
        font-family: sans-serif;
    }

    .MathJax_SVG {
        display: inline;
        font-style: normal;
        font-weight: 400;
        line-height: normal;
        zoom: 90%;
        text-indent: 0px;
        text-align: left;
        text-transform: none;
        letter-spacing: normal;
        word-spacing: normal;
        overflow-wrap: normal;
        white-space: nowrap;
        float: none;
        direction: ltr;
        max-width: none;
        max-height: none;
        min-width: 0px;
        min-height: 0px;
        border: 0px;
        padding: 0px;
        margin: 0px;
    }

    .MathJax_SVG * {
        transition: none 0s ease 0s;
    }

    .MathJax_SVG_Display svg {
        vertical-align: middle !important;
        margin-bottom: 0px !important;
        margin-top: 0px !important;
    }

    .os-windows.monocolor-emoji .md-emoji {
        font-family: "Segoe UI Symbol", sans-serif;
    }

    .md-diagram-panel > svg {
        max-width: 100%;
    }

    [lang="flow"] svg, [lang="mermaid"] svg {
        max-width: 100%;
        height: auto;
    }

    [lang="mermaid"] .node text {
        font-size: 1rem;
    }

    table tr th {
        border-bottom: 0px;
    }

    video {
        max-width: 100%;
        display: block;
        margin: 0px auto;
    }

    iframe {
        max-width: 100%;
        width: 100%;
        border: none;
    }

    .highlight td, .highlight tr {
        border: 0px;
    }

    mark {
        background: rgb(255, 255, 0);
        color: rgb(0, 0, 0);
    }

    .md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong {
        color: inherit;
    }

    mark .md-meta {
        color: rgb(0, 0, 0);
        opacity: 0.3 !important;
    }

    @media print {
        .typora-export h1, .typora-export h2, .typora-export h3, .typora-export h4, .typora-export h5, .typora-export h6 {
            break-inside: avoid;
        }
    }

    .md-diagram-panel .messageText {
        stroke: none !important;
    }

    .md-diagram-panel .start-state {
        fill: var(--node-fill);
    }

    .md-diagram-panel .edgeLabel rect {
        opacity: 1 !important;
    }

    .md-require-zoom-fix foreignobject {
        font-size: var(--mermaid-font-zoom);
    }


    .CodeMirror {
        height: auto;
    }

    .CodeMirror.cm-s-inner {
        background: inherit;
    }

    .CodeMirror-scroll {
        overflow: auto hidden;
        z-index: 3;
    }

    .CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler {
        background-color: rgb(255, 255, 255);
    }

    .CodeMirror-gutters {
        border-right: 1px solid rgb(221, 221, 221);
        background: inherit;
        white-space: nowrap;
    }

    .CodeMirror-linenumber {
        padding: 0px 3px 0px 5px;
        text-align: right;
        color: rgb(153, 153, 153);
    }

    .cm-s-inner .cm-keyword {
        color: rgb(119, 0, 136);
    }

    .cm-s-inner .cm-atom, .cm-s-inner.cm-atom {
        color: rgb(34, 17, 153);
    }

    .cm-s-inner .cm-number {
        color: rgb(17, 102, 68);
    }

    .cm-s-inner .cm-def {
        color: rgb(0, 0, 255);
    }

    .cm-s-inner .cm-variable {
        color: rgb(0, 0, 0);
    }

    .cm-s-inner .cm-variable-2 {
        color: rgb(0, 85, 170);
    }

    .cm-s-inner .cm-variable-3 {
        color: rgb(0, 136, 85);
    }

    .cm-s-inner .cm-string {
        color: rgb(170, 17, 17);
    }

    .cm-s-inner .cm-property {
        color: rgb(0, 0, 0);
    }

    .cm-s-inner .cm-operator {
        color: rgb(152, 26, 26);
    }

    .cm-s-inner .cm-comment, .cm-s-inner.cm-comment {
        color: rgb(170, 85, 0);
    }

    .cm-s-inner .cm-string-2 {
        color: rgb(255, 85, 0);
    }

    .cm-s-inner .cm-meta {
        color: rgb(85, 85, 85);
    }

    .cm-s-inner .cm-qualifier {
        color: rgb(85, 85, 85);
    }

    .cm-s-inner .cm-builtin {
        color: rgb(51, 0, 170);
    }

    .cm-s-inner .cm-bracket {
        color: rgb(153, 153, 119);
    }

    .cm-s-inner .cm-tag {
        color: rgb(17, 119, 0);
    }

    .cm-s-inner .cm-attribute {
        color: rgb(0, 0, 204);
    }

    .cm-s-inner .cm-header, .cm-s-inner.cm-header {
        color: rgb(0, 0, 255);
    }

    .cm-s-inner .cm-quote, .cm-s-inner.cm-quote {
        color: rgb(0, 153, 0);
    }

    .cm-s-inner .cm-hr, .cm-s-inner.cm-hr {
        color: rgb(153, 153, 153);
    }

    .cm-s-inner .cm-link, .cm-s-inner.cm-link {
        color: rgb(0, 0, 204);
    }

    .cm-negative {
        color: rgb(221, 68, 68);
    }

    .cm-positive {
        color: rgb(34, 153, 34);
    }

    .cm-header, .cm-strong {
        font-weight: 700;
    }

    .cm-del {
        text-decoration: line-through;
    }

    .cm-em {
        font-style: italic;
    }

    .cm-link {
        text-decoration: underline;
    }

    .cm-error {
        color: red;
    }

    .cm-invalidchar {
        color: red;
    }

    .cm-constant {
        color: rgb(38, 139, 210);
    }

    .cm-defined {
        color: rgb(181, 137, 0);
    }

    div.CodeMirror span.CodeMirror-matchingbracket {
        color: rgb(0, 255, 0);
    }

    div.CodeMirror span.CodeMirror-nonmatchingbracket {
        color: rgb(255, 34, 34);
    }

    .cm-s-inner .CodeMirror-activeline-background {
        background: inherit;
    }

    .CodeMirror {
        position: relative;
        overflow: hidden;
    }

    .CodeMirror-scroll {
        height: 100%;
        outline: 0px;
        position: relative;
        box-sizing: content-box;
        background: inherit;
    }

    .CodeMirror-sizer {
        position: relative;
    }

    .CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar {
        position: absolute;
        z-index: 6;
        display: none;
    }

    .CodeMirror-vscrollbar {
        right: 0px;
        top: 0px;
        overflow: hidden;
    }

    .CodeMirror-hscrollbar {
        bottom: 0px;
        left: 0px;
        overflow: hidden;
    }

    .CodeMirror-scrollbar-filler {
        right: 0px;
        bottom: 0px;
    }

    .CodeMirror-gutter-filler {
        left: 0px;
        bottom: 0px;
    }

    .CodeMirror-gutters {
        position: absolute;
        left: 0px;
        top: 0px;
        padding-bottom: 30px;
        z-index: 3;
    }

    .CodeMirror-gutter {
        white-space: normal;
        height: 100%;
        box-sizing: content-box;
        padding-bottom: 30px;
        margin-bottom: -32px;
        display: inline-block;
    }

    .CodeMirror-gutter-wrapper {
        position: absolute;
        z-index: 4;
        background: 0px 0px !important;
        border: none !important;
    }

    .CodeMirror-gutter-background {
        position: absolute;
        top: 0px;
        bottom: 0px;
        z-index: 4;
    }

    .CodeMirror-gutter-elt {
        position: absolute;
        cursor: default;
        z-index: 4;
    }

    .CodeMirror-lines {
        cursor: text;
    }

    .CodeMirror pre {
        border-radius: 0px;
        border-width: 0px;
        background: 0px 0px;
        font-family: inherit;
        font-size: inherit;
        margin: 0px;
        white-space: pre;
        overflow-wrap: normal;
        color: inherit;
        z-index: 2;
        position: relative;
        overflow: visible;
    }

    .CodeMirror-wrap pre {
        overflow-wrap: break-word;
        white-space: pre-wrap;
        word-break: normal;
    }

    .CodeMirror-code pre {
        border-right: 30px solid transparent;
        width: fit-content;
    }

    .CodeMirror-wrap .CodeMirror-code pre {
        border-right: none;
        width: auto;
    }

    .CodeMirror-linebackground {
        position: absolute;
        left: 0px;
        right: 0px;
        top: 0px;
        bottom: 0px;
        z-index: 0;
    }

    .CodeMirror-linewidget {
        position: relative;
        z-index: 2;
        overflow: auto;
    }

    .CodeMirror-wrap .CodeMirror-scroll {
        overflow-x: hidden;
    }

    .CodeMirror-measure {
        position: absolute;
        width: 100%;
        height: 0px;
        overflow: hidden;
        visibility: hidden;
    }

    .CodeMirror-measure pre {
        position: static;
    }

    .CodeMirror div.CodeMirror-cursor {
        position: absolute;
        visibility: hidden;
        border-right: none;
        width: 0px;
    }

    .CodeMirror div.CodeMirror-cursor {
        visibility: hidden;
    }

    .CodeMirror-focused div.CodeMirror-cursor {
        visibility: inherit;
    }

    .cm-searching {
        background: rgba(255, 255, 0, 0.4);
    }

    @media print {
        .CodeMirror div.CodeMirror-cursor {
            visibility: hidden;
        }
    }


    :root {
        /* dark color for background*/
        /* default color */
        --bg-color1: #1a2035;
        /* for most panel, context, header, etc */
        --bg-color2: #1a2035;
        /* for toc and table edit panel */
        --bg-color3: #222324;
        /* for tips */
        --bg-color4: #212020;
        /* for blockquote, codeblock, input, etc */
        --bg-color5: #6a6a6a;
        /* light color for text and icon*/
        /* default color */
        --text-color1: #E6E6E6;
        /* for text on panel */
        --text-color2: #E6E6E6;
        /* for checkbox and radio */
        --text-color3: #757575;
        /* for tips */
        --text-color4: #E6E6E6;
        /* for focus mode */
        --text-color5: rgba(170, 178, 180, 0.5);
        /* link color */
        --link-color: #6FC1FF;
        /* table color */
        --table-border-color: #555;
        --table-thead-color: #2b2d2e;
        --table-bg-color: #6a6a6a;
        --table-bg-darker-color: #6a6a6a;
        /* hover color */
        /* default hover background color */
        --hover-bg-color1: rgb(62, 66, 73);
        /* for input item */
        --hover-bg-color2: hsl(220, 9%, 14%);
        /* for button on toc and table edit panel */
        --hover-bg-color3: rgba(62, 66, 73, 0.8);
        /* default hover text color */
        --hover-text-color: white;
        /* active color */
        --active-color: #6FC1FF;
        /* input color */
        --input-color: #222324;
        /* menu divider color */
        /*   --menu-divider-color: rgb(95, 97, 101); */
        --menu-divider-color: #1a2035;
        --graph-divider-color: #E6E6E6;
        /* scrollbar color */
        --scrollbar-thumb-color: #6FC1FF;
        --scrollbar-track-color: rgba(95, 97, 101, 0.3);
        /* theme select color */
        --theme-select-color: rgba(255, 255, 255, 0.5);
        --button-color: rgb(62, 66, 73);
        --select-color: rgb(33, 37, 43);
        /* focus color */
        --focus-color: rgba(100, 100, 100, 0.8);
        --focus-ring-color: var(--focus-color);
        /* codeblock color */
        --code-red-color: #FF75B5;
        --code-yellow-color: #FFB86C;
        --code-cyan-color: #19f9d8;
        --code-blue-color: #6FC1FF;
        --code-purple-color: #FF75B5;
        --code-orange-color: #FFB86C;
        --code-green-color: #19f9d8;
        --code-grey-color: hsl(220, 9%, 55%);

        --code-select-bg-color: rgb(64, 72, 89);
        --code-cursor-color: hsl(220, 100%, 66%);
        /* implicit selecttion text bg color */
        --select-text-bg-color: rgb(150, 156, 170);
        /* implicit button color */
        --primary-color: var(--button-color);
        --primary-btn-border-color: transparent;
        --primary-btn-text-color: var(--text-color2);
        /* implicit sidebar color */
        --side-bar-bg-color: var(--bg-color2);
        --control-text-color: var(--text-color2);
        /* implicit text color */
        --text-color: var(--text-color1);
        /* implicit background color for setting menu */
        --bg-color: var(--bg-color1);
        /* implicit hover color */
        --item-hover-bg-color: var(--hover-bg-color1);
        --item-hover-text-color: var(--hover-text-color);
        /* implicit active color */
        --active-file-bg-color: var(--hover-bg-color);
        /* implicit mathjax edit panel background color */
        --rawblock-edit-panel-bd: var(--bg-color5);
        /* implicit focus mode color */
        --blur-text-color: var(--text-color5);
        /* implicit search result select color */
        --search-select-bg-color: var(--select-text-bg-color);
        --search-select-bg-color: rgb(56, 71, 95);

        --control-text-hover-color: var(--hover-text-color);
        /* implicit active file color in sidebar file menu treeview */
        --active-file-text-color: var(--hover-text-color);
        --active-file-border-color: #6FC1FF;

        --node-border: var(--menu-divider-color);
        --node-fill: var(--bg-color5);

        --window-border: none;
    }

    /* font */
    /* basic style */
    html {
        font-size: 16px;
    }

    body {
        font-family: "Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial,
        sans-serif;
        color: var(--text-color1);
        background: var(--bg-color1);
        line-height: 1.6;
    }

    /* text selection background color */
    .in-text-selection {
        background-color: rgb(64, 72, 89);
    }

    /* link */
    #write a:not([role="menuitem"]) {
        color: var(--link-color) !important;
    }

    #write a:not([role="menuitem"]):hover {
        color: var(--hover-text-color) !important;
    }

    /* h1-h6 */

    #write > h1:first-child,
    h1 {
        padding-top: 0.25em;
        padding-bottom: 0.25em;
        font-weight: normal;
        font-size: 3em;
        text-align: center;
    }

    h2 {
        padding-top: 0.6em;
        padding-bottom: 0.6em;
        font-size: 2.2em;
        font-weight: normal;
        text-align: center;
    }

    h3 {
        padding-top: 0.25em;
        padding-bottom: 0.25em;
        font-weight: normal;
        font-style: italic;
        font-size: 1.6em;
        text-align: center;
    }

    h4 {
        padding-top: 0.25em;
        padding-bottom: 0.25em;
        font-size: 1.2em;
    }

    h2:after {
        border-bottom: 1px solid var(--text-color1);
        content: '';
        width: 100px;
        display: block;
        margin: 0 auto;
        height: 1px;
    }


    /* horizontal divider */
    hr {
        height: 2px;
        background-color: var(--text-color1);
        border: 0px;
    }

    /* list */
    ul,
    ol {
        padding-left: 30px;
    }

    /* blockquote */
    blockquote {
        border-left: 4px solid #45A9F9;
        padding: 4px 15px;
        color: hsl(220, 6%, 60%);
    }

    blockquote blockquote {
        padding-right: 0em;
    }

    /* table */
    .md-rawblock > .md-rawblock-container table,
    .md-table-fig,
    .md-table-fig:active {
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
    }

    table thead tr {
        background-color: var(--table-thead-color);
    }

    table tr th {
        font-weight: bold;
        border-left: 2px solid var(--table-border-color);
        border-right: 2px solid var(--table-border-color);
        text-align: left;
        margin: 0;
        padding: 6px 13px;
    }

    table tbody tr {
        border-top: 2px solid var(--table-border-color);
        margin: 0;
        padding: 0;
    }

    table tbody tr:nth-child(2n) {
        background-color: var(--table-bg-darker-color);
    }

    table tbody tr:nth-child(2n + 1) {
        background-color: var(--table-bg-color);
    }

    table tr td {
        border-left: 2px solid var(--table-border-color);
        border-right: 2px solid var(--table-border-color);
        text-align: left;
        margin: 0;
        padding: 6px 13px;
    }

    table tr th:first-child,
    table tr td:first-child {
        border-left-width: 0px;
    }

    table tr th:last-child,
    table tr td:last-child {
        border-right-width: 0px;
    }

    /* table edit panel */
    .ty-table-edit {
        background-color: var(--bg-color3);
        border: 0px;
        border-radius: 6px;
        padding-top: 2px;
        padding-bottom: 2px;
        padding-left: 6px;
        padding-right: 6px;
        margin-top: -29px !important;
    }

    /* button on table edit panel */
    .ty-table-edit button {
        background-color: transparent;
        color: var(--text-color2);
        border: 0px;
        margin-left: 0px !important;
    }

    /* button hover on table edit panel */
    .ty-table-edit button:hover {
        background-color: var(--hover-bg-color3);
        color: var(--hover-text-color);
    }

    /* adjusting table panel */
    .popover {
        background-color: var(--bg-color2);
        box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
    }

    /* arrow of adjusting table panel */
    .popover.bottom > .arrow:after {
        border-bottom-color: var(--bg-color2);
    }

    /* divider in adjust table panel */
    .md-grid-board-wrap .popover-title {
        border-top-color: var(--menu-divider-color);
    }

    /* grid size */
    .md-grid-board a {
        width: 15px;
        height: 15px;
    }

    /* existing thread grid */
    .md-grid-board tr[row="1"] .md-grid-ext {
        background-color: rgb(60, 60, 60);
    }

    /* not existing thread grid */
    .md-grid-board tr[row="1"] {
        background-color: rgb(220, 220, 220);
    }

    /* existing grid */
    .md-grid-board .md-grid-ext {
        background-color: rgb(120, 120, 120);
    }

    /* selected thread grid */
    .md-grid-board tr[row="1"] a.md-active,
    .md-grid-board tr[row="1"] a:hover {
        background-color: rgb(60, 60, 60);
    }

    /* selected grid */
    .md-grid-board a.md-active,
    .md-grid-board a:hover {
        border-color: var(--menu-divider-color);
        background-color: rgb(120, 120, 120);
    }

    /* footnote */
    sup.md-footnote {
        color: var(--text-color1);
        background-color: var(--bg-color2);
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
    }

    /* mathjax */
    /* .mathjax-block>.code-tooltip {
    bottom: .375rem;
}
.md-mathjax-midline {
    background: #fafafa;
} */
    .md-inline-math script {
        color: var(--text-color1);
    }

    .on-focus-mode #write svg {
        opacity: 1;
    }

    .md-rawblock > .md-rawblock-container {
        transition: 0.5s;
    }

    .md-rawblock > .md-rawblock-tooltip {
        transition: 0.5s;
        display: block;
        visibility: hidden;
        opacity: 0;
    }

    .md-rawblock:hover > .md-rawblock-tooltip {
        transition: 0.5s;
        visibility: visible;
        opacity: 1;
        animation: none;
    }

    /* meta information of image */
    .md-image > .md-meta {
        border: 0px;
        padding: 2px 0px 0px 4px;
        font-size: 0.9em;
        color: var(--text-color1);
    }

    /* input */
    input {
        background-color: var(--input-color) !important;
        border: 0px !important;
        box-shadow: none;
    }

    /* input hover */
    /* input:hover {
    background-color: var(--hover-bg-color2) !important;
} */

    /* radio */
    input[type="radio"]:before {
        content: "";
        display: inline-block;
        width: 1.2rem;
        height: 1.2rem;
        vertical-align: middle;
        text-align: center;
        border: 0px;
        border-radius: 0.55rem;
        background-color: var(--input-color);
        margin-top: -0.4rem;
        margin-left: -0.1rem;
        box-shadow: none;
    }

    /* radio hover */
    input[type="radio"]:not([disabled]):not(:checked):hover:before {
        content: "\25CF";
        font-size: 1rem;
        line-height: 1rem;
        color: var(--text-color3);
    }

    /* radio checked */
    input[type="radio"]:checked:before {
        content: "\25CF";
        font-size: 1rem;
        line-height: 1rem;
        color: var(--text-color2);
    }

    /* radio checked hover*/
    input[type="radio"]:checked:before {
        content: "\25CF";
        font-size: 1rem;
        line-height: 1rem;
        color: var(--hover-text-color);
    }

    /* default focus style */
    :focus {
        outline-color: var(--focus-color);
    }

    /* exit source view button */
    .typora-sourceview-on #toggle-sourceview-btn {
        background-color: var(--bg-color2);
    }

    .typora-sourceview-on #toggle-sourceview-btn:hover {
        background-color: var(--hover-bg-color1);
    }

    /* shadow for image item*/
    .md-image img {
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
    }

    /* toc */
    .md-toc {
        background-color: var(--bg-color3);
        border-radius: 6px;
        padding: 0px 0px 0px 0px;
        margin: 0px 0px 0px 0px;
        border: 0px;
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
    }

    /* toc content */
    .md-toc-content {
        padding-top: 5px;
        padding-bottom: 8px;
        margin-top: 15px;
        margin-bottom: 0px;
    }

    /* remove outline when toc is selected */
    .md-toc:focus .md-toc-content {
        border: 0px;
        margin: 0px;
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
    }

    /* toc item */
    .md-toc-item {
        margin: 2px;
    }

    /* toc edit panel */
    #write div.md-toc-tooltip {
        border: 0px;
        padding-left: 10px;
        padding-right: 10px;
        background-color: var(--bg-color3);
        border-top-left-radius: 6px;
        border-top-right-radius: 6px;
        opacity: 0;
        visibility: hidden;
        display: block !important;
        transition: 0.3s;
    }

    #write .md-toc:focus div.md-toc-tooltip {
        visibility: visible;
        opacity: 1;
    }

    #write .md-toc:focus {
        border-top-left-radius: 0px;
        border-top-right-radius: 0px;
    }

    /* toc delete button */
    .md-delete-toc {
        background-color: transparent;
    }

    /* html block */
    .md-htmlblock:hover .md-htmlblock-container {
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
        border-radius: 6px;
        border-top-right-radius: 0px;
    }

    /* search panel */
    #md-searchpanel {
        background-color: var(--bg-color2);
        color: var(--text-color2);
        box-shadow: none;
    }

    /* ignore case button and find whole word button */
    .searchpanel-search-option-btn {
        border: 0px;
    }

    /* button on search panel */
    #md-searchpanel .btn:hover {
        color: var(--hover-text-color);
        background-color: var(--hover-bg-color1) !important;
    }

    /* remove shadow around input in search panel*/
    #md-searchpanel input {
        box-shadow: none;
    }

    /* search option button hover */
    .searchpanel-search-option-btn:not(.active):hover {
        color: var(--hover-text-color);
        background-color: var(--hover-bg-color1);
    }

    /* close button in search panel */
    #md-searchpanel .input-group-addon.close-btn {
        padding-left: 16px;
        padding-right: 16px;
    }

    /* replaceall button */
    .ty-replace-panel-row #search-panel-replaceall-btn {
        padding-left: 8px;
        padding-right: 6px !important;
    }

    /* replace button */
    .ty-replace-panel-row #search-panel-replace-btn {
        padding-left: 16px;
        padding-right: 16px;
    }

    /* sidebar */
    .sidebar-menu {
        color: var(--text-color2);
    }

    /* sidebar shadow */
    #typora-sidebar,
    .typora-node #typora-sidebar {
        box-shadow: none;
    }

    /* divider between file item and search */
    .ty-sidebar-search-panel {
        border-color: var(--menu-divider-color);
    }

    /* file item in sidebar */
    #file-library .file-list-item {
        border-bottom: 0px;
        opacity: 1;
        border-left: 4px solid;
        border-color: #45A9F9;
    }

    /* file item hover */
    #file-library .file-list-item:hover {
        background-color: var(--hover-bg-color1);
        color: var(--hover-text-color);
        border-color: var(--hover-bg-color1);
    }

    /* file item active */
    #file-library .file-list-item.active {
        background-color: var(--hover-bg-color1);
        color: var(--hover-text-color);
        border-color: var(--hover-text-color);
    }

    /* suffix of file item*/
    .file-list-item-file-ext-part {
        opacity: 0.8;
    }

    /* sidebar file menu */
    #sidebar-files-menu {
        border: 0px;
        box-shadow: none;
    }

    /* sidebar file menu item */
    .dropdown-menu > li > a {
        color: var(--text-color2);
    }

    .dropdown-menu > li > a:hover {
        color: var(--hover-text-color);
    }

    /* sidebar file menu close button */
    #close-sidebar-menu-btn:hover {
        color: var(--hover-text-color);
    }

    /* sidebar file nemu divider */
    #sidebar-files-menu > .show + .menuitem-group-label.show {
        border-color: var(--menu-divider-color);
    }

    /* sidebar osx tab */
    .html-for-mac .sidebar-osx-tab > .sidebar-tabs {
        border: 0px;
        box-shadow: none;
    }

    .html-for-mac .sidebar-content {
        z-index: -1; /* so that the background doesn't overlap with the shadow */
    }

    /* sidebar footer */
    .sidebar-footer {
        border: 0px;
        box-shadow: none;
    }

    /* remove outline when file item in treeview is selected*/
    .file-library-node:not(.file-node-root):focus > .file-node-content {
        outline: none;
    }

    /* sort button on sidebar file menu */
    .ty-side-sort-btn.active,
    .ty-side-sort-btn:hover {
        color: var(--hover-text-color);
    }

    /* setting */
    /* header in setting */
    .window-header {
        box-shadow: none;
    }

    /* sidebar in setting */
    .sidebar {
        background-color: var(--bg-color2) !important;
        box-shadow: none;
    }

    .list-group-content {
        margin-left: 10px !important;
    }

    /* sidebar button in setting menu */
    .nav-group-item {
        color: var(--text-color2) !important;
        border-top-left-radius: 6px !important;
        border-bottom-left-radius: 6px !important;
        border-top-right-radius: 0px !important;
        border-bottom-right-radius: 0px !important;
    }

    /* sidebar button hover in setting menu */
    .nav-group-item:hover,
    .nav-group-item:active,
    .nav-group-item.active {
        background-color: var(--hover-bg-color1) !important;
        color: var(--hover-text-color) !important;
    }

    /* remove up and down button from number type input*/
    input[type="number"]::-webkit-outer-spin-button,
    input[type="number"]::-webkit-inner-spin-button {
        -webkit-appearance: none !important;
    }

    /* the indent example in setting.editor */
    div[data-index="2"] .label-input-group td:last-child div {
        border: 0px !important;
        border-radius: 6px;
        background-color: var(--bg-color5);
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
        margin: 10px !important;
    }

    /* button in setting menu */
    .ty-preferences button.btn-default {
        border: 0px;
        background-color: var(--bg-color5);
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
        border-radius: 6px;
    }

    /* button hover in setting menu */
    .ty-preferences .btn-default:not([disabled]):hover {
        background-color: var(--hover-bg-color1) !important;
    }

    /* return button in setting menu */
    .window-header button:hover {
        color: #6FC1FF !important;
    }

    /* search input in setting menu */
    .search-input {
        border-top-left-radius: 6px !important;
        border-bottom-left-radius: 6px !important;
        border-top-right-radius: 0px !important;
        border-bottom-right-radius: 0px !important;
        margin-top: 10px !important;
        margin-bottom: 10px !important;
        margin-left: 10px !important;
    }

    .search-input:focus {
        border: none !important;
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2) !important;
    }

    /* select item (mostly in setting menu) */
    select {
        border: 0px;
        border-radius: 6px;
        background-color: var(--input-color) !important;
        padding-top: 5px !important;
        padding-bottom: 5px !important;
        box-shadow: none;
    }

    /* enabled select item hover */
    select:not([disabled]):hover {
        color: var(--text-color2);
        opacity: 1;
    }

    /* disabled select item hover */
    select[disabled]:hover {
        opacity: 0.5;
    }

    /* mega menu */
    .megamenu-content,
    .megamenu-opened header {
        background: var(--bg-color1);
    }

    .megamenu-content {
        display: block;
        visibility: hidden;
        opacity: 0;
        transition: 0.3s;
    }

    .megamenu-opened .megamenu-content {
        visibility: visible;
        opacity: 1;
        animation: none;
    }

    /* mega menu sidebar*/
    .megamenu-menu {
        background-color: var(--bg-color2);
        box-shadow: none;
    }

    /* return button in mega menu */
    #megamenu-menu-sidebar .menu-style-btn {
        border: 0px;
    }

    /* remove divider in mega menu */
    .megamenu-menu-header {
        border-color: var(--menu-divider-color);
    }

    /* return button color in mega menu */
    .megamenu-menu-header #megamenu-menu-header-title {
        color: var(--text-color2);
    }

    /* return button hover in mega menu */
    .megamenu-menu-header:hover {
        background-color: var(--hover-bg-color1);
    }

    /* return button hover in mega menu */
    .megamenu-menu-header:hover #megamenu-menu-header-title {
        color: var(--hover-text-color);
    }

    /* long button in mega menu */
    .long-btn {
        border: 0px;
        background-color: var(--bg-color5);
        color: var(--text-color1);
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
        margin-bottom: 10px;
        margin-left: 10px;
    }

    /* recent file in mega menu */
    #recent-file-panel {
        padding: 10px;
    }

    #recent-document-table {
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
    }

    #recent-file-panel-action-btn {
        background: var(--bg-color5);
        border: 0px;
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
    }

    #recent-file-panel thead tr {
        background-color: var(--table-thead-color);
    }

    #recent-file-panel tbody tr:nth-child(2n) {
        background-color: var(--table-bg-darker-color);
    }

    #recent-file-panel tbody tr:nth-child(2n + 1) {
        background-color: var(--table-bg-color);
    }

    #recent-file-panel-action-btn:hover {
        background-color: var(--hover-bg-color1);
        color: var(--text-color2);
    }

    /* theme preview */
    .theme-preview-div {
        box-shadow: 10px 0px 10px rgba(0, 0, 0, 0.8);
    }

    /* theme preview hover */
    .theme-preview-div:hover {
        border-color: var(--theme-select-color);
    }

    /* context menu and spell check panel */
    .dropdown-menu:not(.megamenu-menu-list) {
        background-color: var(--bg-color2);
        color: var(--text-color2);
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5);
    }

    /* divider in context menu and spell check panel */
    .dropdown-menu .divider {
        border-color: var(--menu-divider-color);
    }

    /* remove divider outline */
    .dropdown-menu {
        border: 0px;
    }

    /* footer */
    footer.ty-footer {
        border-top: 0px !important;
        background-color: var(--bg-color2) !important;
        /*     color: var(--text-color2); */
        box-shadow: none;
    }

    /* footer item */
    .footer-item,
    #outline-btn,
    #footer-word-count {
        color: var(--text-color2);
        opacity: 1;
    }

    /* footer item hover */
    .footer-item:hover,
    #outline-btn:hover {
        background-color: var(--hover-bg-color1);
        color: var(--hover-text-color);
    }

    /* button on some panel */
    .btn {
        border: 0px;
        outline-width: 0px !important;
    }

    .btn:hover {
        background-color: var(--hover-bg-color1);
        color: var(--hover-text-color);
    }

    /* traffic button hover */
    #top-titlebar .toolbar-icon.btn:hover {
        color: var(--text-color2);
        background-color: var(--hover-bg-color1);
    }

    /* traffic button hover */
    #top-titlebar #w-close:hover {
        background-color: #e81123 !important;
    }

    /* adjust maxmize restore button height */
    .typora-maxmized #w-restore {
        height: 24px;
    }

    /* left upper button hover */
    .ty-menu-btn-area:hover .ty-menu-btn-area-sub {
        color: var(--text-color2) !important;
    }

    /* scrollbar */
    ::-webkit-scrollbar {
        width: 8px;
        padding-right: 10px;
        background-color: rgba(0, 0, 0, 0);
    }

    /* scrollbar track */
    ::-webkit-scrollbar-track:hover {
        background-color: var(--scrollbar-track-color) !important;
        border-radius: 4px;
    }

    /* scrollbar thumb */
    ::-webkit-scrollbar-thumb,
    ::-webkit-scrollbar-thumb:active {
        background-color: var(--scrollbar-thumb-color) !important;
        border-radius: 4px;
    }

    /* tip when hover on a button */
    #ty-tooltip {
        background-color: var(--bg-color4);
        color: var(--text-color4);
    }

    /* item container hover in context menu */
    .menu-item-container:hover {
        background-color: var(--bg-color2);
    }

    /* item in context menu */
    .menu-item-container .menu-style-btn {
        border-color: var(--menu-divider-color);
    }

    /* mathjax edit panel*/
    .md-rawblock-before {
        border-top-left-radius: 6px;
    }

    .md-rawblock-after {
        border-bottom-left-radius: 6px;
        border-bottom-right-radius: 6px;
    }

    /* mathjax focus */
    .MathJax_SVG:focus {
        outline: none;
        background-color: transparent;
    }

    /* notification panel */
    #md-notification {
        background-color: var(--bg-color2) !important;
        color: var(--text-color2);
        box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.5);
    }

    #ty-surpress-mode-warning-close-btn {
        float: unset !important;
        margin: 0px !important;
    }

    .unibody-window #md-notification p {
        bottom: -4px !important;
    }

    /* inline codeblock */
    code {
        font-size: 0.9em;
        background-color: var(--bg-color5);
        padding: .3em;
        padding-top: 0.15em;
        padding-bottom: 0.15em;
        border: 2px solid #666;
        border-radius: 0.25rem;
    }

    /* codeblock */
    .md-fences,
    .md-fences:active {
        background-color: var(--bg-color5);
        border-radius: 6px;
        padding: 8px 4px 8px 4px !important;
        margin-top: 15px;
        margin-bottom: 15px;
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
    }

    .md-fences .code-tooltip {
        display: block !important;
        visibility: hidden;
        opacity: 0;
        transition: 0.3s;
        background-color: var(--bg-color3);
    }

    .md-fences.md-focus .code-tooltip {
        opacity: 1;
        visibility: visible;
    }

    .CodeMirror-lines {
        padding-left: 4px;
    }

    /* selected text and cursor */
    .CodeMirror-selected,
    .CodeMirror-selectedtext {
        background: var(--code-select-bg-color) !important;
    }

    .CodeMirror div.CodeMirror-cursor {
        border-left: 2px solid var(--code-cursor-color);
        z-index: 3;
    }

    .CodeMirror.cm-s-typora-default div.CodeMirror-cursor {
        border-left: 3px solid var(--code-cursor-color);
    }

    /* highlight */
    .cm-s-inner .cm-property {
        color: var(--code-blue-color) !important;
    }

    .cm-s-inner .cm-operator {
        color: var(--code-cyan-color) !important;
    }

    .cm-s-inner .cm-keyword {
        color: var(--code-purple-color) !important;
    }

    .cm-s-inner .cm-tag {
        color: var(--code-red-color) !important;
    }

    .cm-s-inner .cm-attribute {
        color: var(--code-orange-color) !important;
    }

    .cm-s-inner .cm-string {
        color: var(--code-green-color) !important;
    }

    .cm-s-inner .cm-comment,
    .cm-s-inner.cm-comment {
        /*     color: var(--code-orange-color) !important; */
        color: var(--code-grey-color) !important;
    }

    .cm-s-inner .cm-header,
    .cm-s-inner .cm-def,
    .cm-s-inner.cm-header,
    .cm-s-inner.cm-def {
        /*     color: var(--code-red-color) !important; */
        color: var(--code-blue-color) !important;
    }

    .cm-s-inner .cm-meta,
    .cm-s-inner .cm-qualifier {
        color: var(--code-red-color) !important;
    }

    .cm-s-inner .cm-builtin {
        /*     color: var(--code-blue-color) !important; */
        color: var(--code-cyan-color) !important;
    }

    .cm-s-inner .cm-bracket {
        color: var(--text-color1) !important;
    }

    .cm-s-inner .cm-number {
        color: var(--code-orange-color) !important;
    }

    .cm-s-inner .cm-variable {
        color: var(--text-color1) !important;
    }

    .cm-s-inner .cm-variable-2 {
        /*     color: var(--code-blue-color) !important; */
        color: var(--code-yellow-color) !important;
    }

    .cm-s-typora-default .cm-header,
    .cm-s-typora-default .cm-property {
        color: var(--code-red-color) !important;
    }

    .cm-s-typora-default .cm-string {
        /*     color: var(--code-blue-color); */
        color: var(--code-purple-color);
    }

    .cm-s-typora-default .cm-atom {
        color: var(--code-grey-color);
    }

    .cm-s-typora-default .cm-number {
        color: var(--code-orange-color);
        font-style: normal !important;
    }

    .cm-s-typora-default .cm-link {
        color: var(--code-blue-color);
    }

    .cm-s-typora-default .CodeMirror-activeline-background {
        background: var(--hover-bg-color1);
    }

    .cm-s-typora-default .cm-comment,
    .cm-s-typora-default .cm-code {
        color: var(--code-purple-color);
    }

    .cm-s-typora-default .cm-tag {
        /*     color: var(--code-red-color); */
        color: var(--code-blue-color);
    }

    .cm-s-typora-default .cm-strong,
    .cm-s-typora-default .cm-em,
    .cm-s-typora-default .cm-del {
        /*     color: var(--code-green-color); */
        color: var(--code-orange-color);
    }

    .cm-s-typora-default .cm-block-start.cm-variable-2 {
        /*     color: var(--code-orange-color); */
        color: var(--code-red-color);
    }

    .cm-formatting-task .cm-formatting-task {
        color: var(--code-red-color);
    }

    /* math formula tag */
    .cm-s-inner .cm-atom,
    .cm-s-inner.cm-atom {
        color: var(--code-blue-color);
    }

    /* inline codeblock in source mode */
    .cm-s-typora-default .cm-comment {
        color: var(--code-green-color);
    }

    /* horizontal divider when language is markdown */
    .cm-s-inner .cm-hr {
        color: var(--text-color1);
    }

    /* variable type when language is c/cpp */
    .cm-s-inner .cm-variable-3 {
        color: var(--code-purple-color);
    }

    /* in pie chart and flowchart */
    .cm-s-inner .cm-quote,
    .cm-s-inner.cm-quote {
        color: var(--code-green-color);
    }

    /* unknown highlight keyword */
    .cm-s-inner .cm-link {
        color: var(--code-blue-color);
    }

    .cm-s-inner .cm-negative {
        color: #d95050;
    }

    .cm-s-inner .cm-positive {
        color: #50e650;
    }

    .cm-s-inner .cm-string-2 {
        color: #f50;
    }

    .CodeMirror-gutters {
        border-right: none;
    }

    /* focus mode */
    .on-focus-mode .md-end-block:not(.md-focus) .md-toc-item {
        opacity: 0.5;
    }

    .on-focus-mode #write h1:not(.md-focus):before {
        opacity: 0.5;
    }

    .on-focus-mode #write h2:not(.md-focus):before {
        opacity: 0.5;
    }

    .on-focus-mode #write h1:not(.md-focus) {
        border-color: var(--text-color5);
    }

    .on-focus-mode #write h2:not(.md-focus) {
        border-color: var(--text-color5);
    }

    .on-focus-mode #write h3:not(.md-focus) {
        border-color: var(--text-color5);
    }

    /* YAML block */
    pre.md-meta-block,
    pre.md-meta-block:active {
        background-color: var(--bg-color5);
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
        border-radius: 6px;
        padding: 10px;
        padding-left: 20px;
        padding-right: 20px;
    }

    /* switch between different mode */
    #typora-source {
        font-family: monospace;
        display: block !important;
        visibility: hidden;
        opacity: 0;
        transition: 0.3s;
    }

    .typora-sourceview-on #typora-source {
        visibility: visible;
        opacity: 1;
    }

    #typora-source .CodeMirror-lines {
        max-width: 800px;
        padding-left: 70px;
        padding-right: 70px;
    }

    #write {
        display: block;
        visibility: visible;
        opacity: 1;
        transition: 0.3s;

        padding-left: 70px;
        padding-right: 70px;
    }

    .typora-sourceview-on #write {
        visibility: hidden;
        opacity: 0;
    }

    /* #md-searchpanel {
    visibility: hidden;
    opacity: 0;
    transition: 0.3s !important;
}

.on-search-panel-open #md-searchpanel {
    visibility: visible;
    opacity: 1;
} */

    .uni-preference-panel {
        display: block;
        visibility: hidden;
        opacity: 0;
        transition: 0.3s;
    }

    .show-preference-panel .uni-preference-panel {
        visibility: visible;
        opacity: 1;
    }

    /* quick open menu */
    .typora-quick-open-item:hover {
        background-color: var(--hover-bg-color1);
        color: var(--hover-text-color);
    }

    /* insert table panel */
    .modal-content {
        border: 0px;
        border-radius: 6px;
    }

    .modal-content .btn-primary {
        background-color: var(--hover-bg-color1);
        color: var(--text-color1);
        outline-width: 0px;
    }

    .modal-content .btn-primary:hover {
        color: var(--hover-text-color);
    }

    .modal-content .form-control,
    .modal-content .form-control:focus {
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
    }

    .modal-backdrop {
        background-color: black;
        opacity: 0.3 !important;
    }

    /* zoom  */
    #zoom-hint #zoom-hint-reset {
        color: var(--text-color1);
    }

    #zoom-hint .zoom-hint-button:hover {
        color: var(--hover-text-color) !important;
    }

    /* word count */
    #footer-word-count-info {
        display: block;
        visibility: hidden;
        opacity: 0;
        transition: 0.3s;
    }

    .ty-show-word-count #footer-word-count-info {
        visibility: visible;
        opacity: 1;
    }

    /* spell check */
    #spell-check-panel {
        display: block;
        visibility: hidden;
        opacity: 0;
        transition: 0.3s;
    }

    .ty-show-spell-check #spell-check-panel {
        visibility: visible;
        opacity: 1;
    }

    /* search result */
    .md-search-select {
        border: 2px solid #45A9F9;
        box-sizing: content-box;
        color: var(--text-color1) !important;
    }

    .md-search-hit {
        background-color: var(--search-select-bg-color);
    }

    /* search panel message */
    #searchpanel-msg {
        background-color: var(--bg-color2);
        color: var(--text-color2);
    }

    .searchpanel-msg-btn:hover {
        background-color: var(--hover-bg-color1);
        color: var(--hover-text-color);
    }

    /* language selection for codeblock */
    .auto-suggest-container {
        border: 0px;
        box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2);
        background-color: var(--bg-color2);
    }

    /* sidebar outline item hover and active */
    .outline-item:hover {
        color: var(--hover-text-color);
    }

    .outline-label:hover {
        text-decoration: none;
    }

    .pin-outline .outline-active {
        color: var(--hover-text-color);
    }

    /* sidebar title hover */
    .info-panel-tab:hover {
        color: var(--hover-text-color) !important;
    }

    /* active file in sidebar file menu treeview */
    .file-tree-node.active > .file-node-background {
        background-color: var(--hover-bg-color1);
    }

    /* hover file in sidebar file menu treeview */
    .file-node-content:hover {
        cursor: pointer;
    }

    /* saved button in megamenu */
    #m-saved:hover {
        background-color: var(--bg-color2);
        color: var(--text-color2);
        cursor: default;
    }

    /* mermaid flowchart */
    .node rect,
    .node circle,
    .node ellipse,
    .node polygon,
    .node path {
        fill: var(--bg-color2);
        stroke: var(--graph-divider-color);
    }

    .edgePath .path {
        stroke: var(--graph-divider-color);
    }

    .label {
        color: var(--text-color1);
    }

    .edgeLabel rect {
        fill: transparent !important;
    }

    .cluster rect {
        fill: var(--bg-color5);
        stroke: var(--graph-divider-color);
    }

    /* mermaid sequence*/
    text.actor {
        fill: var(--text-color1);
    }

    .messageLine0,
    .messageLine1 {
        stroke: var(--graph-divider-color) !important;
    }

    rect[class*="activation"] {
        fill: var(--bg-color2);
    }

    .actor-line {
        stroke-width: 1px !important;
    }

    .labelBox {
        stroke: rgb(150, 150, 150);
    }

    .labelText {
        fill: var(--text-color1);
    }

    .loopText {
        fill: var(--text-color1);
    }

    .loopLine {
        stroke: rgb(150, 150, 150);
    }

    .note {
        fill: var(--bg-color2);
        stroke: var(--graph-divider-color);
    }

    .noteText {
        fill: var(--text-color1);
    }

    /* mermaid class */
    g.classGroup text {
        fill: var(--text-color);
    }

    g.classGroup rect {
        stroke: var(--graph-divider-color);
        fill: var(--bg-color2);
    }

    g.classGroup line {
        stroke: var(--graph-divider-color);
    }

    .classLabel .label {
        fill: var(--text-color1) !important;
    }

    .relation {
        stroke: var(--graph-divider-color);
    }

    #compositionStart,
    #compositionEnd,
    #aggregationStart,
    #aggregationEnd,
    #dependencyStart,
    #dependencyStart,
    #extensionStart,
    #extensionEnd {
        fill: var(--graph-divider-color);
        stroke: var(--graph-divider-color);
    }

    .cardinality text {
        fill: var(--text-color);
    }

    /* mermaid state v1 */
    .stateGroup rect,
    .stateGroup line {
        fill: var(--bg-color2) !important;
        stroke: var(--graph-divider-color) !important;
    }

    .stateGroup text {
        fill: var(--text-color) !important;
    }

    .stateGroup circle {
        fill: var(--bg-color4) !important;
        stroke: var(--graph-divider-color) !important;
    }

    .stateGroup .composit {
        /*   fill: rgb(36,40,47) !important; */
        fill: hsl(218, 13%, 17%) !important;
    }

    .stateGroup .alt-composit {
        /*   fill: rgb(36,40,47) !important; */
        fill: hsl(218, 13%, 16.5%) !important;
    }

    .state-note rect {
        fill: var(--bg-color2);
        stroke: var(--graph-divider-color);
    }

    .state-note text {
        fill: var(--text-color);
    }

    .stateLabel text {
        fill: var(--text-color);
    }

    #dependencyEnd {
        fill: var(--graph-divider-color);
        stroke: var(--graph-divider-color);
    }

    /* mermaid state v2*/
    .state-start {
        fill: var(--bg-color4) !important;
        stroke: var(--graph-divider-color) !important;
    }

    .state-end {
        stroke: var(--graph-divider-color) !important;
        fill: var(--bg-color4) !important;
    }

    .divider {
        stroke: var(--graph-divider-color) !important;
        fill: var(--bg-color5) !important;
        fill: hsl(218, 13%, 13.5%) !important;
    }

    .fork-join {
        fill: var(--bg-color2) !important;
        stroke: var(--graph-divider-color) !important;
    }

    .title-state {
        fill: var(--bg-color2) !important;
    }

    .statediagram-cluster .outer {
        /*   fill: var(--bg-color4) !important; */
        stroke: var(--graph-divider-color) !important;
    }

    .statediagram-cluster .inner {
        /*   fill: var(--bg-color2) !important; */
        fill: hsl(218, 13%, 16.5%) !important;
        stroke: var(--graph-divider-color) !important;
    }

    .statediagram-cluster-alt .inner {
        /*   fill: var(--bg-color5) !important; */
        fill: hsl(218, 13%, 16%) !important;
        stroke: var(--graph-divider-color) !important;
    }

    .transition {
        stroke: var(--graph-divider-color);
    }

    #statediagram-barbEnd {
        fill: var(--graph-divider-color);
    }

    /* mermaid journey */
    .journey-section {
        fill: var(--bg-color5);
        stroke: var(--graph-divider-color);
    }

    .journey-section div {
        color: var(--text-color) !important;
    }

    .task {
        fill: var(--bg-color2);
        stroke: var(--graph-divider-color);
        stroke-width: 1px;
    }

    .task div {
        color: var(--text-color) !important;
    }

    #arrowhead {
        fill: var(--graph-divider-color);
        stroke: var(--graph-divider-color);
        stroke-width: 0.3px;
    }

    pre[mermaid-type="journey"] line {
        stroke: var(--graph-divider-color);
        stroke-width: 2px;
    }

    pre[mermaid-type="journey"] text {
        fill: var(--text-color1);
    }

    pre[mermaid-type="journey"] g path,
    pre[mermaid-type="journey"] g line {
        fill: rgb(100, 104, 110);
        stroke: var(--text-color);
    }

    .task-line {
        stroke: var(--graph-divider-color) !important;
    }

    /* mermaid erDiagram */
    pre[mermaid-type="erDiagram"] rect {
        fill: var(--bg-color2);
    }

    pre[mermaid-type="erDiagram"] text {
        fill: var(--text-color);
    }

    pre[mermaid-type="erDiagram"] path {
        stroke: var(--graph-divider-color);
    }

    #ZERO_OR_ONE_START circle,
    #ZERO_OR_ONE_END circle,
    #ZERO_OR_MORE_START circle,
    #ZERO_OR_MORE_END circle {
        fill: var(--bg-color);
    }

    /* mermaid gantt */
    .titleText {
        fill: var(--text-color1);
    }

    .section0,
    .section2 {
        fill: var(--table-thread-color);
    }

    .section1,
    .section3 {
        fill: var(--table-bg-color);
    }

    .task0,
    .task1,
    .task2,
    .task3 {
        fill: rgb(80, 84, 90);
        stroke: rgb(80, 84, 90);
    }

    .taskText0,
    .taskText1,
    .taskText2,
    .taskText3 {
        fill: var(--text-color2) !important;
    }

    .active0,
    .active1,
    .active2,
    .active3 {
        fill: rgb(100, 104, 110);
        stroke: rgb(100, 104, 110);
    }

    .activeText0,
    .activeText1,
    .activeText2,
    .activeText3 {
        fill: var(--text-color2) !important;
    }

    .done0,
    .done1,
    .done2,
    .done3 {
        fill: rgb(48, 51, 58);
        stroke: rgb(48, 51, 58);
    }

    .crit0,
    .crit1,
    .crit2,
    .crit3 {
        fill: rgb(150, 150, 150);
        stroke: var(--text-color1);
    }

    .activeCrit0,
    .activeCrit1,
    .activeCrit2,
    .activeCrit3 {
        fill: rgb(100, 104, 110);
        stroke: var(--text-color1);
    }

    .doneCrit0,
    .doneCrit1,
    .doneCrit2,
    .doneCrit3 {
        fill: rgb(48, 51, 58);
        stroke: var(--text-color1);
    }

    .taskTextOutside0,
    .taskTextOutside2,
    .taskTextOutside1,
    .taskTextOutside3 {
        fill: var(--text-color1) !important;
    }

    .grid text {
        fill: white;
    }

    .today {
        stroke: var(--text-color1);
    }

    /* mermaid pie chart */
    g.legend > text {
        fill: var(--text-color1);
    }

    g.legend > rect {
        stroke: var(--bg-color) !important;
    }

    g > path {
        stroke: var(--bg-color);
    }

    g > text.slice {
        fill: var(--bg-color);
    }

    /* flow diagram */
    .md-fences[lang="flow"] .md-diagram-panel-preview rect {
        fill: var(--bg-color2);
        stroke: var(--graph-divider-color);
        stroke-width: 1.2;
    }

    .md-fences[lang="flow"] .md-diagram-panel-preview path {
        stroke: var(--graph-divider-color);
        stroke-width: 1.2;
    }

    .md-fences[lang="flow"] #cond {
        fill: var(--bg-color2);
    }

    /* sequence diagram */
    .md-fences[lang="sequence"] .md-diagram-panel-preview rect:not([fill="none"]) {
        fill: var(--bg-color2);
        stroke: var(--graph-divider-color);
        stroke-width: 1.2;
    }

    .md-fences[lang="sequence"] .md-diagram-panel-preview path {
        fill: var(--graph-divider-color);
        stroke: var(--graph-divider-color);
        stroke-width: 1.2;
    }

    .md-fences[lang="sequence"] text,
    .md-fences[lang="flow"] text {
        font-family: "Consolas" !important;
    }

    /* remove box shadow when not edit graph */
    .md-fences[lang="sequence"]:not(.md-focus),
    .md-fences[lang="mermaid"]:not(.md-focus),
    .md-fences[lang="flow"]:not(.md-focus) {
        box-shadow: none;
    }

    /* remove border when edit graph */
    .md-diagram-panel {
        border: none !important;
    }

    /*CHECKBOXES*/

    .md-task-list-item > input:before, input[type=checkbox]:before {
        border-radius: 0.2rem;
        margin-top: -0.08rem;
        margin-left: -0.1rem;
        width: 1rem;
        height: 1rem;
        background-color: var(--borders);
        content: " ";
        display: block;
        transition-duration: 0.3s;
        transition-property: background-color;
    }

    .md-task-list-item:hover > input:before, input[type=checkbox]:hover:before {
        background-color: var(--boxes-darker);
    }

    .md-task-list-item > input:checked:before,
    .md-task-list-item > input[checked]:before, input[type=checkbox]:checked:before {
        background-color: #6FC1FF;
    }

    .md-task-list-item:hover > input:checked:before,
    .md-task-list-item:hover > input[checked]:before, input[type=checkbox]:hover:checked:before {
        background-color: #1f65d6;
    }

    .md-task-list-item > input:after,
    .md-task-list-item > input:after, input[type=checkbox]:after {
        transform: rotate(-45deg);
        position: absolute;
        border: 2px solid white;
        border-top: 0;
        border-right: 0;
        top: 0.16rem;
        left: 0.1rem;
        width: 0.6rem;
        height: 0.375rem;
        content: " ";
        opacity: 0;
        transition-duration: 0.3s;
        transition-property: opacity;
    }

    .md-task-list-item > input:checked:after,
    .md-task-list-item > input[checked]:after, input[type=checkbox]:checked:after {
        opacity: 1;
    }

    .ty-preferences input[type=checkbox]:before {
        width: 1.2rem;
        height: 1.2rem;
    }

    .ty-preferences input[type=checkbox]:after {
        width: 0.5rem;
        height: 0.32rem;
        top: 0.19rem;
        left: 0.14rem;
    }


    @media print {
        html {
            font-size: 13px;
        }

        table,
        pre {
            page-break-inside: avoid;
        }

        pre {
            word-wrap: break-word;
        }
    }

    #write pre.md-meta-block {
        padding: 1rem;
        line-height: 1.45;
        background-color: var(--bg-color5);
        border: 0;
        border-radius: 0.3rem;
        color: var(--text-color1);
        border-left: solid 4px #45A9F9;
    }

    .md-image > .md-meta {
        border-radius: 3px;
        padding: 2px 0px 0px 4px;
        font-size: 0.9em;
        color: inherit;
    }

    .md-tag {
        color: var(--md-char-color);
        opacity: 1;
    }

    .md-toc {
        margin: 1.5rem 0rem;
    }


    mark {
        background-color: #FFB86C;
        border-radius: 3px;
        padding: 1px 3px 1px 3px;
        box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
    }

    .task-list-done {
        text-decoration: line-through;
        color: hsl(220, 6%, 45%);
    }

    kbd {
        background: #222;
        color: #ddd;
        border-color: #444;
        box-shadow: 0 2px 0 #333;
    }

    .sidebar-content {
        counter-reset: h1
    }

    .outline-h1 {
        counter-reset: h2
    }

    .outline-h2 {
        counter-reset: h3
    }

    .outline-h3 {
        counter-reset: h4
    }

    .outline-h4 {
        counter-reset: h5
    }

    .outline-h5 {
        counter-reset: h6
    }

    .outline-h1 > .outline-item > .outline-label:before {
        counter-increment: h1;
        content: counter(h1) " "
    }

    .outline-h2 > .outline-item > .outline-label:before {
        counter-increment: h2;
        content: counter(h1) "." counter(h2) " "
    }

    .outline-h3 > .outline-item > .outline-label:before {
        counter-increment: h3;
        content: counter(h1) "." counter(h2) "." counter(h3) " "
    }

    .outline-h4 > .outline-item > .outline-label:before {
        counter-increment: h4;
        content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) " "
    }

    .outline-h5 > .outline-item > .outline-label:before {
        counter-increment: h5;
        content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) " "
    }

    .outline-h6 > .outline-item > .outline-label:before {
        counter-increment: h6;
        content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) " "
    }


    /** initialize css counter */
    #write {
        counter-reset: h1
    }

    h1 {
        counter-reset: h2
    }

    h2 {
        counter-reset: h3
    }

    h3 {
        counter-reset: h4
    }

    h4 {
        counter-reset: h5
    }

    h5 {
        counter-reset: h6
    }

    /** put counter result into headings */
    #write h1:before {
        counter-increment: h1;
        content: counter(h1) " "
    }

    #write h2:before {
        counter-increment: h2;
        content: counter(h1) "." counter(h2) " "
    }

    #write h3:before,
    h3.md-focus.md-heading:before /** override the default style for focused headings */
    {
        counter-increment: h3;
        content: counter(h1) "." counter(h2) "." counter(h3) " "
    }

    #write h4:before,
    h4.md-focus.md-heading:before {
        counter-increment: h4;
        content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) " "
    }

    #write h5:before,
    h5.md-focus.md-heading:before {
        counter-increment: h5;
        content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) " "
    }

    #write h6:before,
    h6.md-focus.md-heading:before {
        counter-increment: h6;
        content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) " "
    }

    /** override the default style for focused headings */
    #write > h3.md-focus:before,
    #write > h4.md-focus:before,
    #write > h5.md-focus:before,
    #write > h6.md-focus:before,
    h3.md-focus:before,
    h4.md-focus:before,
    h5.md-focus:before,
    h6.md-focus:before {
        color: inherit;
        border: inherit;
        border-radius: inherit;
        position: inherit;
        left: initial;
        float: none;
        top: initial;
        font-size: inherit;
        padding-left: inherit;
        padding-right: inherit;
        vertical-align: inherit;
        font-weight: inherit;
        line-height: inherit;
    }

    #write {
        display: block;
        visibility: visible;
        opacity: 1;
        transition: 0.3s;
        max-width: 98%;
        padding-left: 70px;
        padding-right: 70px;
    }
    </style>
</head>
<body class='typora-export os-windows'>
<div id='write' class=''><h1><a name="godeyes-说明文档" class="md-header-anchor"></a><span>GodEyes 说明文档</span></h1>
    <h2><a name="介绍" class="md-header-anchor"></a><span>介绍</span></h2>
    <p><span>		</span><span>本系统灵感源于shodan和zoomeye, 旨在实现网络空间资产搜索引擎, 但是不同点在于添加了内容摘要和穷举破解模块. 本系统为本人的毕业设计, 其中有可能存在一些问题, 请诸位使用者敬请谅解, 由于需要参与毕业答辩, 需要完成一切相关流程后, 本项目才会开源, 因此上线时间可能会推迟.</span>
    </p>
    <p><span>		</span><span>本系统是基于python语言实现的, 使用MySQL作为数据持久化存储, 因此需要安装python和MySQL. 尽可能版本与开发时版本一致, 这样才能极大可能的减少异常和错误.</span>
    </p>
    <h2><a name="开发环境" class="md-header-anchor"></a><span>开发环境</span></h2>
    <ul>
        <li><span>python==3.7.8</span></li>
        <li><span>MySQL==5.7.31</span></li>
        <li><span>demjson==2.2.4</span></li>
        <li><span>paramiko==2.7.1</span></li>
        <li><span>Django==2.1.3</span></li>
        <li><span>requests==2.25.1</span></li>
        <li><span>netaddr==0.8.0</span></li>
        <li><span>urllib3==1.24.2</span></li>
        <li><span>PyMySQL==0.9.3</span></li>
    </ul>
    <h2><a name="目录结构介绍" class="md-header-anchor"></a><span>目录结构介绍</span></h2>
    <pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="bash"
         style="break-inside: unset;"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="bash"><div
            style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 43px;"><textarea
            autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0"
            style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div
            class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler"
                                                                                 cm-not-content="true"></div><div
            class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer"
                                                         style="margin-left: 35px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div
            style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div
            role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt"><div>69</div></div></div><div
            class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div
            class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline"
                                                                      style="position: relative;"><div
            class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div
            class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -35px; width: 35px;"></div><div
            class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;"><span
            class="cm-attribute">--</span>根目录--</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">2</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&gt; lastest.dat (ip库文件, 当系统IP库更新时将会生成此文件, 此文件为临时文件)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">3</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&gt; main.py (GodEyes 傻瓜式运行程序, 打开后即可通过提示启动系统)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">4</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&gt; requirements.txt (本系统需要安装的库文件, 首次运行建议在当前目录运行 pip install <span
            class="cm-attribute">-r</span> requirements.txt 进行运行库的安装)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">5</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&gt; readme.md (系统的介绍文件)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">6</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&gt; | FingerPrint (指纹信息存储目录)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">7</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; __init__.py (指纹信息初始化模块)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">8</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; HttpPortList.txt (http协议的端口号,遵循一行一条)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">9</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; MysqlPortList.txt (MySQL协议的端口号,遵循一行一条)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">10</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">&gt; <span class="cm-attribute">--</span> &gt; SshPortList.txt (SSH协议的端口号,遵循一行一条)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">11</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; TelnetPortList.txt (TELNET协议的端口号,遵循一行一条)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">12</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; proxies.txt (代理服务器存储文件,遵循ip:port格式)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">13</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | custom (自定义信息目录)</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">14</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> | dict (破解字典目录)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">15</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; default_user.txt (默认的用户名字典,遵循一行一条)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">16</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; default_pwd.txt (默认的密码字典,遵循一行一条)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">17</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> | header (请求头目录)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">18</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; default.json (HTTP协议请求头伪造文件,遵循json格式,设计前欲多文件选择,后期时间不足而未实现)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">19</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> | webFingerPrint (web指纹目录)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">20</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">&gt; <span class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; blackList.txt (指纹判断的黑名单列表)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">21</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; result.json (指纹构造后的结果存储文件)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">22</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&gt; modules (核心模块类 系统后台部分)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">23</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; __init__.py (后台初始化模块)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">24</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; GSystem.py (定义系统文件处理, 配置处理, 扫描器连接等)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">25</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; httpOper.py (HTTP请求扫描模块)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">26</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; ipOper.py (IP信息处理模块, IP库管理模块)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">27</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; mysqlOper.py (MySQL请求扫描模块, 数据库处理模块)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">28</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; sshOper.py (SSH请求扫描模块)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">29</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; telnetOper.py (TELNET请求扫描模块)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">30</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">&gt; <span class="cm-attribute">--</span> &gt; sys.json (系统配置文件)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">31</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&gt; View (视图层, 基于DJango)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">32</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; manage.py (DJango 服务器启动入口)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">33</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> &gt; db.sqlite3 (SESSION 等服务器存储数据库)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">34</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | templates (静态页面)</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">35</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; ClearData.html (清除数据页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">36</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; Disclaimer.html (免责声明页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">37</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; crackRules.html (破解规则页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">38</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; dashBoard.html (仪表盘页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">39</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; dataManager.html (数据管理页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">40</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">&gt; <span class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; empty.html (空页面 用于非json数据回显 后期另有用途)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">41</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; fingerPrint.html (指纹管理页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">42</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; help.html (帮助页面)</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">43</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; info.html (错误提示页面)</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">44</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; install.html (安装页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">45</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; ipTableManager.html (IP表管理页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">46</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; license.html (许可证页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">47</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; login.html (登录页面)</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">48</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; manager.html (管理框架页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">49</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; modifyAccount.html (账户修改页面 [针对于自身修改])</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">50</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">&gt; <span class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; portSettings.html (端口设置页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">51</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; requestConstructor.html (请求头构造页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">52</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; scanner.html (扫描器页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">53</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; scannerLog.html (扫描器日志页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">54</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; systemConfig.html (系统高级配置页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">55</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> &gt; systemLog.html (系统日志页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">56</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> &gt; userManager.html (用户管理页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">57</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | static (引用的js css font imgs信息 细节部分不做详细说明了)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">58</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> | ... .... .... .... ...</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">59</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> | js (JavaScript脚本存放路径)</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">60</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">&gt; <span class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> | font (字体存放路径)</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">61</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> | css (层叠样式表存放路径)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">62</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> | imgs (图片存放路径)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">63</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | godeyes (前后端关联模块)</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">64</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> | __init__.py (前后端连接初始化模块)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">65</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> | control.py (控制层 预处理前端请求)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">66</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> | settings.py (Django 设置文件)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">67</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> | urls.py (url 地址处理模块)</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">68</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation"
                                                                style="padding-right: 0.1px;">&gt; <span
            class="cm-attribute">--</span> | <span class="cm-attribute">--</span> | view.py (页面中转处理模块, 用于接收前端请求, 发送给控制层, 并且控制层信息回馈到页面)</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">69</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">&gt; <span class="cm-attribute">--</span> | <span
            class="cm-attribute">--</span> | wsgi.py (然而并没有用到, 由Django自动生成)</span></pre></div></div></div></div></div></div><div
            style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 1587px;"></div><div
            class="CodeMirror-gutters" style="height: 1587px; left: 0px;"><div
            class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 35px;"></div></div></div></div></pre>
    <h2><a name="配置文件详细说明" class="md-header-anchor"></a><span>配置文件详细说明</span></h2>
    <pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="json"
         style="break-inside: unset;"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="json"><div
            style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 43px;"><textarea
            autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0"
            style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div
            class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler"
                                                                                 cm-not-content="true"></div><div
            class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer"
                                                         style="margin-left: 35px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div
            style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div
            role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt"><div>50</div></div></div><div
            class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div
            class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline"
                                                                      style="position: relative;"><div
            class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div
            class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -35px; width: 35px;"></div><div
            class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">{</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">2</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"app"</span>: <span class="cm-string">"应用名"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">3</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"version"</span>: <span class="cm-string">"版本"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">4</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"firstRun"</span>: <span class="cm-string">"是否首次运行(布尔类型)"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">5</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"scannerStopWaitSecond"</span>: <span class="cm-string">"扫描器停止等待时间,影响前端页面阻塞时间(数字类型)"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">6</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"proxies"</span>: <span
            class="cm-string">"代理模式(Enable/Disable)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">7</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"proxiesList"</span>: <span class="cm-string">"代理文件路径(FingerPrint/proxies.txt)"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">8</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"database"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">9</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"url"</span>: <span class="cm-string">"数据库地址"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">10</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"user"</span>: <span class="cm-string">"数据库用户名"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">11</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"passwd"</span>: <span class="cm-string">"数据库密码"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">12</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"db"</span>: <span class="cm-string">"数据库名称"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">13</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"charset"</span>: <span
            class="cm-string">"数据库编码(默认utf8,如果后期需要修改,请手动修改)"</span> &nbsp;</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">14</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}, &nbsp;<span
            class="cm-string cm-property">"ipTable"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">15</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"source"</span>: <span
            class="cm-string">"IP源名称(CZ88)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">16</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"currentVersion"</span>: <span
            class="cm-string">"当前IP库版本信息(2021-01-12)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">17</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"commit_num"</span>: <span class="cm-string">"更新IP表分组提交个数, 整数类型(5000)"</span></span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">18</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}, &nbsp;<span
            class="cm-string cm-property">"httpScanners"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">19</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"enable"</span>: <span
            class="cm-string">"http扫描器总开关(True)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">20</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-string cm-property">"timeout"</span>: <span
            class="cm-string">"请求超时时间,单位秒(3)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">21</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"threadCount"</span>: <span class="cm-string">"线程总数,实际会比其多一个,单位个(数字类型)"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">22</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"delay"</span>: <span
            class="cm-string">"每此请求过后暂停时间"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">23</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"header"</span>: <span class="cm-string">"请求头路径(FingerPrint/custom/header/default.json)"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">24</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"portList"</span>: <span class="cm-string">"端口列表(FingerPrint/HttpPortList.txt)"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">25</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"RequestHeaderMode"</span>: <span
            class="cm-string">"请求头模式(custom/normal)"</span> &nbsp;</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">26</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}, &nbsp;<span
            class="cm-string cm-property">"mysqlScanners"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">27</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"enable"</span>:<span
            class="cm-string">"http扫描器总开关(True)"</span>,,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">28</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"threadCount"</span>: <span class="cm-string">"线程总数,实际会比其多一个,单位个(数字类型)"</span>,,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">29</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"delay"</span>: &nbsp;<span class="cm-string">"请求超时时间,单位秒(3)"</span>,,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">30</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"crash"</span>: <span
            class="cm-string">"破解开关(True/False)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">31</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"dictionary_user"</span>: <span
            class="cm-string">"用户名规则文件名"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">32</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"dictionary_pwd"</span>: <span
            class="cm-string">"密码规则文件名"</span> &nbsp;</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">33</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}, &nbsp;<span
            class="cm-string cm-property">"sshScanners"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">34</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"enable"</span>: <span
            class="cm-string">"ssh扫描器总开关(True)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">35</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"timeout"</span>: &nbsp;<span
            class="cm-string">"请求超时时间,单位秒(10)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">36</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"threadCount"</span>: <span class="cm-string">"线程总数,实际会比其多一个,单位个(数字类型)"</span>,,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">37</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"delay"</span>: <span
            class="cm-string">"请求超时时间,单位秒(3)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">38</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"crash"</span>: <span
            class="cm-string">"破解开关(True/False)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">39</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"dictionary_user"</span>: <span
            class="cm-string">"用户名规则文件名"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">40</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-string cm-property">"dictionary_pwd"</span>: <span
            class="cm-string">"密码规则文件名"</span> &nbsp;</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">41</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}, &nbsp;<span
            class="cm-string cm-property">"telnetScanners"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">42</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"enable"</span>: <span
            class="cm-string">"telnet扫描器总开关(True)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">43</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"timeout"</span>: &nbsp;<span class="cm-string">"请求超时时间,单位秒(3)"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">44</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"threadCount"</span>: <span class="cm-string">"线程总数,实际会比其多一个,单位个(数字类型)"</span>,,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">45</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"delay"</span>: <span class="cm-string">"请求超时时间,单位秒(3)"</span>,,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">46</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"crash"</span>: <span
            class="cm-string">"破解开关(True/False)"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">47</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"dictionary_user"</span>: <span
            class="cm-string">"用户名规则文件名"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">48</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"dictionary_pwd"</span>: <span
            class="cm-string">"密码规则文件名"</span> &nbsp;</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">49</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span
            class="cm-tab" role="presentation" cm-text="	">    </span>}</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">50</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">}</span></pre></div></div></div></div></div></div><div
            style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 1150px;"></div><div
            class="CodeMirror-gutters" style="height: 1150px; left: 0px;"><div
            class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 35px;"></div></div></div></div></pre>
    <h1><a name="系统安装" class="md-header-anchor"></a><span>系统安装</span></h1>
    <h2><a name="linux" class="md-header-anchor"></a><span>linux</span></h2>
    <pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="bash"><div
            class="CodeMirror cm-s-inner CodeMirror-wrap" lang="bash"><div
            style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 35px;"><textarea
            autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0"
            style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div
            class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler"
                                                                                 cm-not-content="true"></div><div
            class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer"
                                                         style="margin-left: 27px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div
            style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div
            role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt"><div>2</div></div></div><div
            class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div
            class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div
            class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div
            class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -27px; width: 27px;"></div><div
            class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -27px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 19px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">apt-get install python pip <span class="cm-comment"># 其中apt-get为实例 具体根据系统的包管理器命令为准,此处仅作介绍</span></span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -27px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 19px;">2</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">pip install <span class="cm-attribute">-r</span> requirement.txt</span></pre></div></div></div></div></div></div><div
            style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 46px;"></div><div
            class="CodeMirror-gutters" style="height: 46px; left: 0px;"><div
            class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 27px;"></div></div></div></div></pre>
    <h2><a name="windows" class="md-header-anchor"></a><span>windows</span></h2>
    <pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang=""><div
            class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div
            style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 35px;"><textarea
            autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0"
            style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div
            class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler"
                                                                                 cm-not-content="true"></div><div
            class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer"
                                                         style="margin-left: 27px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div
            style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div
            role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt"><div>3</div></div></div><div
            class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div
            class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div
            class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div
            class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -27px; width: 27px;"></div><div
            class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -27px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 19px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">官方网站下载python3.7.8</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -27px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 19px;">2</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">安装pip包管理器</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -27px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 19px;">3</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">在此系统目录运行pip install -r requirement.txt</span></pre></div></div></div></div></div></div><div
            style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 69px;"></div><div
            class="CodeMirror-gutters" style="height: 69px; left: 0px;"><div
            class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 27px;"></div></div></div></div></pre>
    <h2><a name="系统搭建" class="md-header-anchor"></a><span>系统搭建</span></h2>
    <ol start=''>
        <li><p><span>运行main.py</span></p></li>
        <li><p><span>如果正常运行, 将会提示中英文的协议条款中部分内容, 回车键即可继续.</span></p></li>
        <li><p><span>如果没有异常, 将会显示 Starting development server at </span><a href='http://127.0.0.1:8000/' target='_blank'
                                                                           class='url'>http://127.0.0.1:8000/</a><span> 字样 其中地址就是服务器地址, 可以在浏览器中打开</span>
        </p></li>
        <li><p><span>打开后进入安装向导页面, 请认真阅读协议条款, 十秒内无法进行下一步</span></p></li>
        <li><p><span>同意后进入配置页面.</span></p>
            <blockquote><p><span>数据库地址: 也就是MySQL服务器的地址</span></p>
                <p><span>数据库用户: 登录到MySQL的用户名</span></p>
                <p><span>数据库密码: 登录到指定用户的MySQL用户的密码</span></p>
                <p><span>数据库名称: 该系统将会在数据库系统中创建一个数据库, 此项也就是您期望数据库的名称</span></p>
                <p><span>默认管理员的用户名: 登录到该系统的用户名</span></p>
                <p><span>默认管理员的密码:  登录到该系统默认管理员的密码</span></p></blockquote>
            <p><span>其中校验时对于数据库连接的校验, 其中管理员密码至少六位, 设置完毕后即可进行安装</span></p></li>
        <li><p><span>安装过程可能需要大量时间, 请保证网络通畅, 因为系统安装的过程中不仅仅对于本地数据表的创建, 而且还会更新IP库, IP库通过网络进行下载. 此处加了限制, 如果IP库更新失败, 可能无法正常安装和使用系统, 倘若您不需要IP库, 可以手动修改sys.json, 讲firstRun项设置为false</span>
        </p></li>
        <li><p><span>安装成功后跳转到登陆页面</span></p></li>
    </ol>
    <h1><a name="功能说明" class="md-header-anchor"></a><span>功能说明</span></h1>
    <h2><a name="仪表盘" class="md-header-anchor"></a><span>仪表盘</span></h2>
    <p><span>其中通过可视化界面显示系统当前状态, 数据表中表项存放的个数, 当前扫描器事件, 普通扫描器的活动线程数量以及最近加入数据库的项目列表</span></p>
    <h2><a name="扫描器" class="md-header-anchor"></a><span>扫描器</span></h2>
    <p><span>对于扫描器的所有功能</span></p>
    <h3><a name="综合扫描器" class="md-header-anchor"></a><span>综合扫描器</span></h3>
    <p><span>管理员可以通过数据IP或者是CIDR块进行IP段的扫描, 扫描分为三种扫描方式</span></p>
    <ul>
        <li><span>快速扫描 此方式只会进行http协议的扫描</span></li>
        <li><span>扩展扫描 此方式会对http\ssh\mysql\telnet协议进行扫描</span></li>
        <li><span>完整扫描 在扩展扫描的基础上会对ssh\MySQL\telnet进行密码登录的破解</span></li>
    </ul>
    <p><span>协扫描模式: 多进程扫描模式, 此方法对于前端页面响应影响较小, 但是此方法不会显示线程信息</span></p>
    <p><span>已选中的端口仅为端口显示的提示,如果需要配置, 参见 3.2.2</span></p>
    <h3><a name="端口设置" class="md-header-anchor"></a><span>端口设置</span></h3>
    <p><span>此页面分为4栏, 每个协议中均可设置扫描端口, 后台会根据换行(回车)进行逐一扫描, 因此需要您遵循程序解析的规范</span></p>
    <ul>
        <li><span>检查按钮: 此按钮即可检查是否符合解析规范, 结果将会在主标题下回显</span></li>
        <li><span>保存按钮: 此按钮即可将前端页面中输入的端口文本传递给后台服务器, 服务器进行保存, 保存结果将会在主标题下回显</span></li>
        <li><span>如果出现错误: 将会提示错误的协议名以及具体行, 红色代表错误, 绿色代表成功</span></li>
    </ul>
    <h3><a name="请求构造" class="md-header-anchor"></a><span>请求构造</span></h3>
    <p><span>请求构造是针对性行为, 默认请求头为空, 并且无法修改请求体格式, 只有在自定义模式下才可以修改, 因为请求头格式为键值对, 因此您需要遵循JSON的语法格式, 我们也提供了格式的校验功能.</span></p>
    <ul>
        <li><span>重新加载: 重新从服务器中加载, 并且回显到前端页面, 此按钮将直接覆盖页面中的数据.</span></li>
        <li><span>格式化&amp;校验: 格式化JSON文本, 并且校验是否符合JSON语法, 如果JSON非法, 将会弹出提示, 并且提示错误的具体位置</span></li>
        <li><span>保存: 将请求体中的数据上传到服务器, 服务器进行保存. </span></li>
    </ul>
    <p>⚠️<span> 本模块中保存并不具备校验功能, 因为JSON校验结果仅供参考, 如果您确信您的请求头没有问题, 可以直接保存. 我没有对保存加以校验限制.</span></p>
    <p>&nbsp;</p>
    <h3><a name="穷举爆破规则" class="md-header-anchor"></a><span>穷举爆破规则</span></h3>
    <p>⚠️<span> 此模块涉及到破解部分, 请合法使用</span></p>
    <p>💁‍♂<span> 提示: 穷举爆破的条目并不是越多越好, 如果过分的多会影响整体效率, 并且可能触发目标服务器的防火墙, 因此请先与渗透甲方进行协商</span></p>
    <p><span>此模块中的TELNET破解为实验性功能, 无法保障成功的破解, 结果数据仅供参考</span></p>
    <p><span>头部:</span></p>
    <ul>
        <li><span>MySQL 切换--查看并且修改MySQL 的规则</span></li>
        <li><span>Telnet 切换--查看并且修改Telnet 的规则</span></li>
        <li><span>SSH 切换--查看并且修改SSH 的规则</span></li>
    </ul>
    <p><span>中部:</span></p>
    <ul>
        <li><span>规则文件--账户: 下拉框可以选择已经存在的规则, 选中后即自动保存</span></li>
        <li><span>新建: 新建指定规则的文件, 您需要保证用户名符合操作系统以及磁盘类型的规范</span></li>
        <li><span>保存: 如果您对下面的规则文本进行了修改, 需要点击保存才能生效</span></li>
        <li><span>删除: 此操作会提示确认, 删除当前选中的规则文件. 默认字典不允许删除</span></li>
    </ul>
    <p><span>下部:</span></p>
    <ul>
        <li><span>左侧为用户名回显以及修改区域</span></li>
        <li><span>右侧为密码回显以及修改区域</span></li>
    </ul>
    <h2><a name="数据中心" class="md-header-anchor"></a><span>数据中心</span></h2>
    <h3><a name="数据管理" class="md-header-anchor"></a><span>数据管理</span></h3>
    <p><span>上部: 选择需要管理的协议</span></p>
    <p><span>中部:</span></p>
    <ul>
        <li><span>搜索: 搜索在后台进行的是全字段的模糊查询</span></li>
    </ul>
    <p><span>数据部分:</span></p>
    <ul>
        <li><span>左侧: 显示协议名称, 图标右下角的颜色代表可靠程度, 灰色代表不可靠, 绿色代表可靠. 可靠判断规则为7天内均为可靠数据</span></li>
        <li><span>顶部: IP:端口 以及IP对应的地理位置</span></li>
        <li><span>右侧: 此纪录存入数据库的时间</span></li>
        <li><span>下侧: 详细内容</span></li>
    </ul>
    <p><span>导航分页:</span></p>
    <ul>
        <li><span>您可以跳转到首页和尾页以及当前页的前一页和后一页</span></li>
        <li><span>无法手动输入页码, 但是如果您非要这么做, 可以看一下cookies, 可能会有灵感呦</span></li>
    </ul>
    <h3><a name="ip表管理" class="md-header-anchor"></a><span>IP表管理</span></h3>
    <p><span>IP库仪表盘: 显示当前数据源以及IP库的信息, 此页面可以进行IP库的升级操作, 当前作者只收录了一种IP源, 后期可能会增加IP源, 供用户选择</span></p>
    <p><span>IP库升级: </span>⚠️<span>此操作会停止扫描器的工作, 并且此操作耗时与网络状态正相关</span></p>
    <p><span>IP搜索: 您可以输入地理地址和IP地址, 我们会将您输入的数据进行数据库检索, IP必须输入完整的地址, 地理地址可以输入部分, 后台会进行模糊搜索.</span></p>
    <p><span>导航分页:</span></p>
    <ul>
        <li><span>此分页同数据管理</span></li>
    </ul>
    <h3><a name="指纹管理" class="md-header-anchor"></a><span>指纹管理</span></h3>
    <p><span>操作:</span></p>
    <ul>
        <li><span>重新构建指纹列表: 因为指纹分析需要耗费大量时间, 因此并不是实时处理, 后续版本可能会实现实时处理指纹, 指纹为请求头中的关键字, 根据排名分析, 可以看到web服务器的信息, 例如服务器的构架, 操作系统等信息</span>
        </li>
        <li><span>指纹黑名单: 因为指纹识别模块需要处理大量的字符, 其中涉及到脏数据的清理, 因此算法可能不能完全胜任, 因此如果您不希望一些字样出现在指纹中, 可以通过指纹黑名单进行设置, 当重新构建指纹列表时就会跳过此字样. (服务器在重新构建指纹列表时,判断是不区分大小写的，字段按行分割)</span>
        </li>
    </ul>
    <h2><a name="系统设置" class="md-header-anchor"></a><span>系统设置</span></h2>
    <h3><a name="用户管理" class="md-header-anchor"></a><span>用户管理</span></h3>
    <p><span>管理员可以在此页面对用户信息进行设置, 甚至可以看到用户的密码, 但是只有管理员才会有这个权限, 管理员可以添加用户,并且可以修改用户的密码,甚至是级别. 但是删除的时候还是要保留一个管理员噢.</span>
    </p>
    <h3><a name="扫描器日志" class="md-header-anchor"></a><span>扫描器日志</span></h3>
    <p><span>此页面为扫描器生成的日志数据, 在页面中就可以直接看到扫描器工作状态, 可以通过搜索来进行级别筛选.</span></p>
    <p>⚠️<span> 如果页面加载速度过慢, 请考虑日志数量太多了, 是时候清理一下日志了.</span></p>
    <h3><a name="系统日志" class="md-header-anchor"></a><span>系统日志:</span></h3>
    <p><span>此页面为系统事件产生的日志数据, 那个用户使用的IP是什么, 访问了哪些页面, 发送了那些请求.</span></p>
    <p>⚠️<span> 如果页面加载速度过慢, 请考虑日志数量太多了, 是时候清理一下日志了.</span></p>
    <p>⚠️<span> 当修改密码的时候, 密码也会明文记录到日志中</span></p>
    <h3><a name="配置文件" class="md-header-anchor"></a><span>配置文件</span></h3>
    <ul>
        <li><span>重新加载: 重新从服务器中加载, 并且回显到前端页面, 此按钮将直接覆盖页面中的数据.</span></li>
        <li><span>格式化&amp;校验: 格式化JSON文本, 并且校验是否符合JSON语法, 如果JSON非法, 将会弹出提示, 并且提示错误的具体位置</span></li>
        <li><span>保存: 将配置文本上传到服务器, 服务器进行保存. </span></li>
    </ul>
    <p>⚠️<span>详细配置规则见1.4 , 手动修改开放性较强, 但是如果修改时出现错误, 可能导致系统无法正常使用, 甚至是无法启动</span></p>
    <h3><a name="清空数据表" class="md-header-anchor"></a><span>清空数据表</span></h3>
    <p><span>此页面中对于数据表进行了解释, 您需要手动选择要清空的数据表, 选择完成后, 需要勾选[我很清楚我在做什么( 复选框在页面加载成功后的十秒内无法点击)], 随后才能点击[删除选中项所对应的数据表]</span>
    </p>
    <h2><a name="帮助" class="md-header-anchor"></a><span>帮助</span></h2>
    <h3><a name="帮助文档" class="md-header-anchor"></a><span>帮助文档</span></h3>
    <p><span>也就是网页版的此文档, 本文档将会生成HTML页面, 存放到系统的帮助文档中</span></p>
    <h3><a name="免责声明" class="md-header-anchor"></a><span>免责声明</span></h3>
    <p><span>您在安装过程中已经同意了的免责声明条款, 您可以在这个页面重新看到此声明</span></p>
    <h3><a name="许可协议" class="md-header-anchor"></a><span>许可协议</span></h3>
    <p><span>本项目遵循的开源许可说明</span></p>
    <h1><a name="疑难解答" class="md-header-anchor"></a><span>疑难解答</span></h1>
    <h2><a name="sysjson修复" class="md-header-anchor"></a><span>sys.json修复</span></h2>
    <p>⚠️<span> 注意: 此配置为​重新安装的sys.json, 如果需要重新安装系统, 请替换此文件内容到sys.json</span></p>
    <pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="json"
         style="break-inside: unset;"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang="json"><div
            style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 43px;"><textarea
            autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0"
            style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div
            class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler"
                                                                                 cm-not-content="true"></div><div
            class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer"
                                                         style="margin-left: 35px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div
            style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div
            role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt"><div>50</div></div></div><div
            class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div
            class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline"
                                                                      style="position: relative;"><div
            class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div
            class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -35px; width: 35px;"></div><div
            class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">{</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">2</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"app"</span>: <span class="cm-string">"God Eyes"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">3</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"version"</span>: <span class="cm-string">"v1.0"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">4</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"firstRun"</span>: <span class="cm-atom">true</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">5</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"scannerStopWaitSecond"</span>: <span class="cm-number">1</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">6</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"proxies"</span>: <span class="cm-string">"Disable"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">7</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"proxiesList"</span>: <span class="cm-string">"FingerPrint/proxies.txt"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">8</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;<span
            class="cm-string cm-property">"database"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">9</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"url"</span>: <span class="cm-string">"localhost"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">10</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"user"</span>: <span class="cm-string">"root"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">11</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"passwd"</span>: <span class="cm-string">"root"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">12</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"db"</span>: <span class="cm-string">"godeyes"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">13</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"charset"</span>: <span
            class="cm-string">"utf8"</span> &nbsp;</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">14</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}, &nbsp;<span
            class="cm-string cm-property">"ipTable"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">15</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"source"</span>: <span class="cm-string">"CZ88"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">16</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"currentVersion"</span>: <span
            class="cm-string">"0000-00-00"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">17</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"commit_num"</span>: <span
            class="cm-number">5000</span> &nbsp;</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">18</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}, &nbsp;<span
            class="cm-string cm-property">"httpScanners"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">19</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"enable"</span>: <span class="cm-string">"True"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">20</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-string cm-property">"timeout"</span>: <span
            class="cm-number">3</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">21</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"threadCount"</span>: <span class="cm-number">50</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">22</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"delay"</span>: <span class="cm-number">2</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">23</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"header"</span>: <span class="cm-string">"FingerPrint/custom/header/default.json"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">24</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"portList"</span>: <span
            class="cm-string">"FingerPrint/HttpPortList.txt"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">25</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"RequestHeaderMode"</span>: <span
            class="cm-string">"custom"</span> &nbsp;</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">26</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}, &nbsp;<span
            class="cm-string cm-property">"mysqlScanners"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">27</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"enable"</span>: <span class="cm-string">"True"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">28</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"threadCount"</span>: <span class="cm-number">50</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">29</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"delay"</span>: <span class="cm-number">2</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">30</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"crash"</span>: <span class="cm-string">"True"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">31</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"dictionary_user"</span>: <span
            class="cm-string">"default_user.txt"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">32</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"dictionary_pwd"</span>: <span class="cm-string">"default_pwd.txt"</span> &nbsp;</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">33</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}, &nbsp;<span
            class="cm-string cm-property">"sshScanners"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">34</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"enable"</span>: <span class="cm-string">"True"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">35</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"timeout"</span>: <span class="cm-number">10</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">36</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"threadCount"</span>: <span class="cm-number">50</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">37</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"delay"</span>: <span class="cm-number">2</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">38</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"crash"</span>: <span class="cm-string">"True"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">39</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"dictionary_user"</span>: <span
            class="cm-string">"default_user.txt"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">40</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-string cm-property">"dictionary_pwd"</span>: <span
            class="cm-string">"default_pwd.txt"</span> &nbsp;</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">41</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}, &nbsp;<span
            class="cm-string cm-property">"telnetScanners"</span>: {</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">42</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"enable"</span>: <span class="cm-string">"True"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">43</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"timeout"</span>: <span class="cm-number">10</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">44</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"threadCount"</span>: <span class="cm-number">50</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">45</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"delay"</span>: <span class="cm-number">2</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">46</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"crash"</span>: <span class="cm-string">"True"</span>,</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">47</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"dictionary_user"</span>: <span
            class="cm-string">"default_user.txt"</span>,</span></pre></div><div style="position: relative;"><div
            class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">48</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span
            class="cm-string cm-property">"dictionary_pwd"</span>: <span class="cm-string">"default_pwd.txt"</span> &nbsp;</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">49</div></div><pre
            class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;  }</span></pre></div><div
            style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -35px;"><div
            class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show"
            style="left: 0px; width: 27px;">50</div></div><pre class=" CodeMirror-line " role="presentation"><span
            role="presentation" style="padding-right: 0.1px;">}</span></pre></div></div></div></div></div></div><div
            style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 1150px;"></div><div
            class="CodeMirror-gutters" style="height: 1150px; left: 0px;"><div
            class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 35px;"></div></div></div></div></pre>
    <h2><a name="提示godeyes服务器错误" class="md-header-anchor"></a><span>提示GodEyes服务器错误</span></h2>
    <ol start=''>
        <li><span>可能您长时间登陆后没有操作, 导致当前会话过期, 您可以刷新页面, 也可以通过注销返回到登录页面, 重新登陆即可</span></li>
        <li><span>此错误既后台服务器错误, 如果您是使用者, 可以将控制台中的错误信息发送给开发者</span></li>
    </ol>
    <h2><a name="正在等待服务器相应时间过长" class="md-header-anchor"></a><span>正在等待服务器相应...时间过长</span></h2>
    <ol start=''>
        <li><span>这个问题可能是因为您的电脑配置过低, 导致数据库回调过慢, 可以考虑把数据存放到固态硬盘中, 甚至是读写效率更高的存储设备(内存盘, 磁带)</span></li>
        <li><span>如果等待时间过长, 可以在开发者视图重新复现, 观察Console项是否存在异常, 本项目测试过程已经预防了报错不提示, 如果仍然有漏网之鱼, 请反馈</span></li>
    </ol>
    <h2><a name="页面加载不正常" class="md-header-anchor"></a><span>页面加载不正常</span></h2>
    <p><span>由于开发过程中一致使用Chrome, 使用者尽量使用谷歌浏览器, 虽然做了适配, 但是难免存在漏网之鱼, 如果仍然不正常, 请反馈.</span></p></div>
<br/><br/><br/><br/><br/><br/>
</body>
</html>